2

私は API Facebook ガイドに従います。コードは次のとおりです。

ib2 = (ImageButton) findViewById(R.id.imageButton2);

    list = new OnClickListener() {

        public void onClick(View v) {

             /*
             * Get existing access_token if any
             */
            mPrefs = getPreferences(MODE_PRIVATE);
            String access_token = mPrefs.getString("access_token", null);
            long expires = mPrefs.getLong("access_expires", 0);
            if(access_token != null) {
                facebook.setAccessToken(access_token);
            }
            if(expires != 0) {
                facebook.setAccessExpires(expires);
            }

            /*
             * Only call authorize if the access_token has expired.
             */
            if(!facebook.isSessionValid()) {

                facebook.authorize(Answer.this, new String[] {"user_about_me","publish_checkins"}, new DialogListener() {
                    public void onComplete(Bundle values) {
                        SharedPreferences.Editor editor = mPrefs.edit();
                        editor.putString("access_token", facebook.getAccessToken());
                        editor.putLong("access_expires", facebook.getAccessExpires());
                        editor.commit();
                    }

                    public void onFacebookError(FacebookError error) {}

                    public void onError(DialogError e) {}

                    public void onCancel() {}
                });
            }
    }};


    ib2.setOnClickListener(list); 

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    facebook.authorizeCallback(requestCode, resultCode, data);
}

それぞれが正しい宣言で正しい位置にいます。と...

ボタンで初めて Onclick を実行すると、Facebook からアプリに必要なアクセス許可を受け入れるように求められます。

しかし...

同じボタンで 2 回目に Onclick を実行すると、facebook ウィンドウが開きません。なぜそれができるのですか?

パーミッションを設定すると、オーソリゼーション OK が表示されます!!!

4

2 に答える 2

1

公式のFacebookアプリケーションをインストールしていますか?もしそうなら、それはバグだと私は彼らがまだ修正していないと信じているからです。

それが問題かどうかはわかりませんが、ダイアログを強制してみることができます。facebook.authorize(Answer.this, new String[] {"user_about_me","publish_checkins"}, Facebook.FORCE_DIALOG_AUTH, new DialogListener() {

あなたがここで何を経験しているのかよくわかりませんので、どのように機能するか教えてください。

于 2012-10-12T22:31:10.047 に答える
0
"The first time doing Onclick on the button, facebook ask me to accept the permissions     required for my app."

この場合、Facebookでアプリにログインするのは初めてなので、アプリにはアクセストークンがなく、有効期限が切れます

facebook.isSessionValid()= false

-> facebook.authorize()が実行されます

Facebookはあなたに許可を求めます(あなたのFacebookアカウントは以前にあなたのアプリを決して許可しないので)

しかし、2度目は、

アクセストークンと有効期限はsharepreferenceに保存されています、==> facebook.isSessionValid()はtrue、

==> facebook.authorize()は実行されません

==>ログインしているようです

したがって、Facebookウィンドウはポップアップしません。

Facebookのポップアップウィンドウをもう一度見たい場合は、

1)アプリのキャッシュをクリーンアップします

2)アプリを終了します(sharepreferenceのアクセストークンは明確になります)

次に、Facebookのログインウィンドウがポップアップ表示されますが、アプリをすでに許可しているため、許可ページは表示されません(一度だけ許可する必要があります)

Facebookの許可ページをもう一度表示したい場合は、Facebookに移動し、[プライバシー設定]-> [広告、アプリ、ウェブサイト]-> [編集設定]を押して、APPの許可を解除してください。次に、アプリへの次回のログインのために、Premissionページが再びポップアップ表示されます

于 2012-10-15T15:05:46.753 に答える