0

私は Android で Facebook アプリケーションに取り組んでいます.アプリケーションを 1 回または 2 回実行しています.アクセス トークンは 3 回目以降は正常に動作します.アクセス トークンを失うのはなぜですか?実行時。

どなたか助けてください....

編集1:

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub
    super.onActivityResult(requestCode, resultCode, data);
    mFacebook.authorizeCallback(requestCode, resultCode, data);
}

ログインボタンクリック::::

mBtnFbLogin.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            Log.d("Image Button", "button Clicked");
            loginToFacebook();
        }
    });

ログイン方法 ::::::

public void loginToFacebook() {

    mPrefs = getPreferences(MODE_PRIVATE);
    String access_token = mPrefs.getString("access_token", null);
    long expires = mPrefs.getLong("access_expires", 0);

    if (access_token != null) {
        mFacebook.setAccessToken(access_token);

        Log.d("FB Sessions", "" + mFacebook.isSessionValid());
        Toast.makeText(getApplicationContext(), "Login SuccessFully",
                Toast.LENGTH_LONG).show();



    }

    if (expires != 0) {
        mFacebook.setAccessExpires(expires);
    }

    if (!mFacebook.isSessionValid()) {
        mFacebook.authorize(this,
                new String[] { "email", "publish_stream" },
                new DialogListener() {

                    @Override
                    public void onCancel() {
                        // Function to handle cancel event
                        Log.d("FB Sessions",
                                "" + mFacebook.isSessionValid());
                        Toast.makeText(getApplicationContext(),
                                "Login Cancel", Toast.LENGTH_LONG).show();
                    }

                    @Override
                    public void onComplete(Bundle values) {
                        // Function to handle complete event
                        // Edit Preferences and update facebook acess_token
                        SharedPreferences.Editor editor = mPrefs.edit();
                        editor.putString("access_token",
                                mFacebook.getAccessToken());
                        editor.putLong("access_expires",
                                mFacebook.getAccessExpires());
                        editor.commit();

                        Log.d("FB Sessions",
                                "" + mFacebook.isSessionValid());
                        Toast.makeText(getApplicationContext(),
                                "Login SuccessFully", Toast.LENGTH_LONG)
                                .show();


                    }

                    @Override
                    public void onError(DialogError error) {
                        // Function to handle error

                    }

                    @Override
                    public void onFacebookError(FacebookError fberror) {
                        // Function to handle Facebook errors

                    }

                });
    }
}
4

2 に答える 2

0

Facebook Android SDK を使用する古い/非推奨の方法を使用していますが、ログイン コードを表面的に読み取ることは問題ないように見えます。また、アクセス トークン拡張コードが欠落しているため、アクセス トークンの有効期限が切れると機能しなくなります。

この種の Facebook API の使用法を引き続き使用するには: Facebook 操作を試みる前に、必要に応じて確認mFacebook.shouldExtendAccessToken()して呼び出すmFacebook.extendAccessToken()必要があります。

新しい API 使用スタイルに変更するには、Sessionクラスを使用します。

于 2013-05-02T13:17:13.817 に答える