【问题标题】:Why i am lose my Access Token in android?为什么我在 android 中丢失了我的访问令牌?
【发布时间】:2013-05-02 21:17:13
【问题描述】:

我正在使用 android 中的 Facebook 应用程序。我正在运行我的应用程序一次 r 两次我的访问令牌在第三次丢失我的访问令牌后运行良好。为什么,我丢失了访问令牌?我可以做什么而不丢失运行时的访问令牌。

任何人请帮帮我....

编辑 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

                    }

                });
    }
}

【问题讨论】:

  • 没有水晶球很难分辨。请在您获取/存储/恢复访问令牌的位置包含相关代码 sn-ps。
  • 好的,我编辑我的问题并添加我的代码。请帮助我...

标签: android facebook facebook-access-token


【解决方案1】:

访问令牌将每隔一小时过期一次,您可能会在该小时后第三次运行

【讨论】:

  • 为什么它每小时都会过期。我能为它做些什么。
  • 好问题....出于安全目的,facebook 设计为每小时过期一次 accesstoken ....在本教程中获取 accesstoken 有一个非常简单的功能.....androidhive.info/2012/03/android-facebook-connect-tutorial你会得到清晰的解释……阅读教程……玩得开心……
  • 感谢您的回复。我正在像本教程一样获取我的访问密钥。但是我仍然被 access_key 迷失了..在获得 app_id 后在 facebook 开发人员博客中完成任何设置??
【解决方案2】:

表面上阅读您的登录代码看起来不错,但使用的是旧的/已弃用的 Facebook Android SDK 方式。 (您遵循的示例/教程有多新?)它还缺少访问令牌扩展代码,因此当访问令牌过期时它将停止工作。

要继续使用这种 Facebook API 用法:在尝试 Facebook 操作之前,您应该检查 mFacebook.shouldExtendAccessToken() 并在需要时调用 mFacebook.extendAccessToken()

要更改为更新的 API 使用风格,请使用 Session 类。

【讨论】:

  • 进一步扩展,如果您使用 3.0 API 中的 Session 和 Request 类,它会在您发出图形请求时自动为您扩展令牌,因此无需手动检查和扩展。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-02-09
  • 1970-01-01
  • 2021-06-07
  • 2019-06-20
  • 2017-01-18
  • 1970-01-01
  • 2014-08-23
相关资源
最近更新 更多