1

が facebook のログイン ボタンであるプログラムを作成しました。 は facebook のログイン ページをロードしますが、瞬時に制御が同じに戻ります。ログインボタンを含むウィンドウ... また、同じプログラムがエミュレータ上で細かく実行されています。

4

2 に答える 2

1

Facebook 開発者 API ドキュメントを参照してください。

問題は Anshuman が言ったように、電話に既に SSO があり、再度認証しようとすると問題が発生することですonActivityResult。特別な facebook のauthorizeCallback機能をオーバーライドして実行する必要があります。

次のようになります。

            facebook.authorize(SinglePost.this, permissions,
                new DialogListener() {

                    @Override
                    public void onComplete(Bundle values) {
                        // control comes here if the login was successful
                        // Facebook.TOKEN is the key by which the value of
                        // access token is stored in the Bundle called
                        // 'values'
                        Log.d("COMPLETE", "AUTH COMPLETE. VALUES: "
                                + values.size());
                        Log.d("AUTH TOKEN",
                                "== " + values.getString(Facebook.TOKEN));
                        updateStatus(values.getString(Facebook.TOKEN));
                    }

                    @Override
                    public void onFacebookError(FacebookError e) {
                        Log.d("FACEBOOK ERROR",
                                "FB ERROR. MSG: " + e.getMessage()
                                        + ", CAUSE: " + e.getCause());
                    }

                    @Override
                    public void onError(DialogError e) {
                        Log.e("ERROR", "AUTH ERROR. MSG: " + e.getMessage()
                                + ", CAUSE: " + e.getCause());
                    }

                    @Override
                    public void onCancel() {
                        Log.d("CANCELLED", "AUTH CANCELLED");
                    }
                });

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    Log.d("onActivityResult", "onActivityResult");
    facebook.authorizeCallback(requestCode, resultCode, data);
}
于 2012-05-07T07:57:07.217 に答える