1

ユーザーがボタンを押すと、別のアクティビティ(アクティビティ2と呼びましょう)が開始されるメニューアクティビティ(アクティビティ1と呼びましょう)のようなものがあります。アクティビティ 2 で Facebook SSO を使用したい。

アクティビティ 2 を開始するためのアクティビティ 1 のコードは次のとおりです。

Intent i = new Intent(this, ViewDomanda.class);
startActivity(i);

これまでのところ、とても良いです... ViewDomanda (つまり、アクティビティ 2 は問題なく開始されます)。関連するコードViewDomanda.javaは次のとおりです。

public class ViewDomanda extends Activity {
      private Facebook qqFacebook;
      private SharedPreferences mPrefs;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.domanda);


            this.qqFacebook = new Facebook(MY_APP_ID);

        /*
         * 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);

        Log.i("access_token",String.valueOf(access_token));

        if(access_token != null) {
            this.qqFacebook.setAccessToken(access_token);
        }
        if(expires != 0) {
            this.qqFacebook.setAccessExpires(expires);
        }

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

            this.qqFacebook.authorize((Activity)this, new String[] {},
                     new DialogListener() {
                  public void onComplete(Bundle values) {
                    SharedPreferences.Editor editor = mPrefs.edit();
                    editor.putString("access_token", qqFacebook.getAccessToken());
                    editor.putLong("access_expires", qqFacebook.getAccessExpires());
                    editor.commit();
                    Log.i("onComplete","done");
                  }

                  public void onFacebookError(FacebookError error) {}

                  public void onError(DialogError e) {}

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

そして、私はいつものことをしています:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
            this.qqFacebook.authorizeCallback(requestCode, resultCode, data);
    }

私は Facebook アプリにログインしているので、authorize メソッドは FB アプリに許可を与えるように要求するだけです。

問題は次のとおりです。

  1. FB アプリに権限を付与した後、アクティビティ 2 が突然閉じられ、代わりにアクティビティ 1 が返されます。

  2. さらに悪いことに、DialogListener の OnComplete メソッドが呼び出されず、FB ユーザーが FB アプリをインストールしている間に Android アプリが承認されません。

チュートリアルの内容に正確に従ったと思っていましたが、確かに何かが欠けています。どんな助けでも大歓迎です。

4

0 に答える 0