0

Facebook をゲームに統合してユーザーのウォールにレコードを投稿しようとしていますが、ログイン後に権限を付与するウィンドウが表示され、それを受け入れると、他に何もせずにゲームを再開したいと思います。

セッションが開始されたとき、またはセッションがすでに開始されている場合に変数 ( useFacebook) があります。手動で有効にすると、Facebook への投稿でエラーが発生します。truefalsetrue

これは関連するコードです:

@Override
    public void onResumeGame() {
            super.onResumeGame();

            if (mServ != null)
            {                      
                    mServ.resumeMusic();                                           
            }

            checkFaceBook();               
    } 
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data)
    {
        super.onActivityResult(requestCode, resultCode, data);
        Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
} 
public void checkFaceBook()
    {
    Session.openActiveSession(this, false, new Session.StatusCallback()
    {
            @Override
            public void call(Session session, SessionState state, Exception exception)
            {
            if (session.isOpened())
            {
                // Never enters here.
                    Request.executeMeRequestAsync(session, new Request.GraphUserCallback()
                    {
                                            @Override
                                            public void onCompleted(GraphUser user, Response response)
                                            {
                                                    if (user != null)
                                                    {
                            fbUsername = user.getFirstName();
                            useFacebook = true;
                                                    }
                                            }                        
                    });
            }
            }
    });
    } 
public void facebookLogin()
    {              
            Session.openActiveSession(this, true, new Session.StatusCallback()
            {  
                    @Override
                    public void call(Session session, SessionState state, Exception exception)
                    {
                    if (session.isOpened())
                    {
                       // Never enters here.
                            Request.executeMeRequestAsync(session, new Request.GraphUserCallback()
                            {
                                    @Override
                                    public void onCompleted(GraphUser user, Response response)
                                    {                                              
                                    if (user != null)
                                    {
                                            // CALLBACK: USER IS LOGGED IN
                                            // DO YOUR STUFF HERE
                                            fbUsername = user.getFirstName();
                                            useFacebook = true;

                                            facebookFeedDialog("Test");
                                    }
                                    }
                            });
                    }
                    }
            });
    } 
public void facebookFeedDialog(String message)
    {              
            Bundle params = new Bundle();
            params.putString("name", message);
            params.putString("caption", "ccccc");
            params.putString("description", "ddddd");
            params.putString("link", "https://market.android.com/details?id="+this.getApplication().getPackageName().toString());
            params.putString("picture", "http://www.myimage.com/01.jpg");

            WebDialog feedDialog = (new WebDialog.FeedDialogBuilder(this, Session.getActiveSession(), params)).setOnCompleteListener(new OnCompleteListener() {
                    @Override
                    public void onComplete(Bundle values, FacebookException error)
                    {
                    if (error == null)
                    {
                    final String postId = values.getString("post_id");
                    if (postId != null)
                    {
                            // POSTED                              
                    }
                    else
                    {
                            // POST CANCELLED                              
                    }
                    }
                    else if (error instanceof FacebookOperationCanceledException)
                    {
                            // POST CANCELLED                              
                    }
                    else
                    {
                            // ERROR POSTING                               
                    }
                   }                 
            }).build();
            feedDialog.show();
    } 
public boolean onSceneTouchEvent(Scene pScene,
                    TouchEvent pSceneTouchEvent) {         

            if (mFB.onAreaTouched(pSceneTouchEvent, pSceneTouchEvent.getX(), pSceneTouchEvent.getY()))
            {                                              
                    mClickSnd.play();                      

                    if (useFacebook == true)
                    {                              
                            facebookFeedDialog("Test");
                    }
                    else
                    {
                            facebookLogin();                               
                    }                              

                    return true;
            }

            return false;
    }    

そして、これらは私が得る画面です:

ログイン 権限

ありがとう。

4

1 に答える 1

0

画面は正しいです。ユーザーは、データの読み取りまたは公開を許可する前に、アプリを承認する必要があります。

onResume で、Session.getActiveSession(); を使用してみてください。これにより、現在アクティブなセッションが取得されます。

于 2013-02-19T19:19:23.737 に答える