4

こんにちは、仲間のプログラマーです。私は新しい 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

それでもエラーが発生するのはなぜですか? 許可は決して呼び出されませんか?

4

3 に答える 3

1

問題はよくあることです。現在アプリケーションで使用している Posting Method の動作するソース コードを共有しています。

private void publishStory(String status)
{       
Session session = Session.getActiveSession();

if (session != null) 
{
Bundle postParams = new Bundle();
postParams.putString("message", status);
Request.Callback callback = new Request.Callback() 
    {
    public void onMalformedURLException(MalformedURLException e)
          {

          } 
    public void onIOException(IOException e) 
          {

          } 
    public void onFileNotFoundException(FileNotFoundExceptione) 
          {

          } 
    public void onFacebookError(FacebookError e) 
          {

          }

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 
    {
    }
}
};

Request request = new Request(session, "me/feed", postParams, HttpMethod.POST, callback);
RequestAsyncTask task = new RequestAsyncTask(request);
task.execute();
}
}


これで問題が解決することを願っています。

編集:
適切なアクセス許可と投稿機能を使用して Facebook SDK 3.0 をセットアップする詳細な手順については、次のリンクを参照してください。
ログイン失敗後に Facebook に投稿 Android
http://www.kpbird.com/2013/03/android-login-using-facebook-sdk-30.html

于 2013-09-09T06:44:07.810 に答える