2

ボタンのあるFacebookに接続するAndroidアプリを作成します。ボタンをクリックすると、アプリはfacebook.authorizeを呼び出して許可を求めます。許可の要求画面から戻った後、onActivityResultメソッドを呼び出す必要があります。しかし、私の場合、このメソッドを呼び出すことはありません。私はいくつかの同様の質問を見つけましたが、すべての解決策が私のケースを解決するわけではありません。ユーザーがボタンをクリックしたときの私のコードは次のとおりです。

facebook.authorize(this, new String[] { "read_friendlists" }, 
                new DialogListener() {
                    public void onComplete(Bundle values) {
                        Log.v("complete", "complete");
                        hideNeedLoginView();
                    }

                    public void onCancel() {
                        Log.v("cancel", "cancel");
                        hideNeedLoginView();
                    }

                    public void onFacebookError(FacebookError e) {
                        // TODO Auto-generated method stub
                        Log.v("error", "error");
                    }

                    public void onError(DialogError e) {
                        // TODO Auto-generated method stub
                        Log.v("error", "error");
                    }
                });

そしてonActivityResultメソッド:

public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    facebook.authorizeCallback(requestCode, resultCode, data);
}

onActivityResultが呼び出されないため、すべてのonCompleteメソッドまたはonCancelメソッドも呼び出されません。Intent.FLAG_ACTIVITY_NO_HISTORYが定義されていないため、問題はありません(これはFacebookページに記載されています)。activityCodeをFacebook.FORCE_DIALOG_AUTHに設定した場合、ボタンをクリックすると、アプリが応答しません。そして、私はFacebookアプリをデバイスにインストールしています。承認後にonActivityResultメソッドを呼び出すにはどうすればよいですか?私はどこにも解決策を見つけることができないので、誰かがこれを手伝ってください。

4

1 に答える 1

1

次のコードがお役に立てば幸いです。

private static final String[] PERMISSIONS = new String[]
    { "publish_stream", "read_stream", "offline_access" };

mFacebook = new Facebook(APP_ID); 
mFacebook.authorize(this, PERMISSIONS,new LoginDialogListener());


private final class LoginDialogListener implements
            com.facebook.android.Facebook.DialogListener
    {

        /**
         * Called when the dialog has completed successfully
         */
        public void onComplete(Bundle values)
        {
            // Process onComplete
            Log.d("FB Sample App", "LoginDialogListener.onComplete()");
            // Dispatch on its own thread
            mHandler.post(new Runnable()
            {
                public void run()
                {
                    mText.setText("Facebook login successful. Press Menu...");
                }
            });
        }

        public void onFacebookError(FacebookError error)
        {
            // Process error
            Log.d("FB Sample App", "LoginDialogListener.onFacebookError()");
        }

        public void onError(DialogError error)
        {
            // Process error message
            Log.d("FB Sample App", "LoginDialogListener.onError()");
        }

        public void onCancel()
        {
            // Process cancel message
            Log.d("FB Sample App", "LoginDialogListener.onCancel()");
        }
    }
于 2012-06-04T08:14:55.247 に答える