こんにちは、仲間のプログラマーです。私は新しい Facebook SDK で問題を抱えています。
シナリオは次のとおりです。
フラグメントを使用しているので、この手順に従います
Android の Facebook インターフェイスが Fragments で動作しないのはなぜですか?
そして今、私はoncompleteとトークンIDを取得しています
今、私は自分のウォールに投稿したいので、この関数を作成しました
private void publishStory(Session session) {
if (session != null){
// Check for publish permissions
session.addCallback(new StatusCallback() {
@Override
public void call(Session session, SessionState state,
Exception exception) {
List<String> PERMISSIONS = Arrays
.asList("publish_actions");
session
.requestNewPublishPermissions(new Session.NewPermissionsRequest(
getActivity(), PERMISSIONS));
Request request = Request.newStatusUpdateRequest(
session, "Temple Hello Word Sample",
new Request.Callback() {
@Override
public void onCompleted(Response response) {
Log.i("fb:done = ", response.getGraphObject() + ","
+ response.getError());
}
});
request.executeAsync();
}
});
そして宣言をオンコンプリートに置く
public void call(final Session session, SessionState state, Exception exception) {
if (session.isOpened()) {
Request.executeMeRequestAsync(session, new Request.GraphUserCallback() {
@Override
public void onCompleted(GraphUser user, Response response) {
publishStory(session);
}
else
{
Log.v("FACEBOOK ", "NO ACCESS");
}
}
});
}
私の問題は、このコード行にありsession.addCallback(new StatusCallback() {
、次のステップをスキップして、ウォールに投稿せずに関数を終了します。
私はアプリケーションIDとアクセストークンを持っているので、セッションがアクティブであることを確信しています..
ヘルプはありますか?
ありがとう
編集
以下の回答に基づいてこのコードを使用し、新しい権限を追加しました
private void publishStoryTEST(final Session session)
{
if (session != null)
{
Bundle postParams = new Bundle();
postParams.putString("message", "TEST");
Request.Callback callback = new Request.Callback()
{
public void onCompleted(Response response)
{
JSONObject graphResponse = response.getGraphObject().getInnerJSONObject();
String postId = null;
try
{
postId = graphResponse.getString("id");
}
catch (JSONException e)
{
Log.i("JSON", "JSON error " + e.getMessage());
}
FacebookRequestError error = response.getError();
Log.e("post response", response.toString());
if (error != null)
{
}
else
{
}
}
};
List<String> PERMISSIONS = Arrays
.asList("publish_actions");
session.requestNewPublishPermissions(new Session.NewPermissionsRequest(getActivity(), PERMISSIONS));
Request request = new Request(session, "me/feed", postParams, HttpMethod.POST, callback);
RequestAsyncTask task = new RequestAsyncTask(request);
task.execute();
}
}
しかし、それでもエラーが表示されます
The user hasn't authorized the application to perform this action
それでもエラーが発生するのはなぜですか? 許可は決して呼び出されませんか?