Android Facebook SDK - 无法接收访问令牌

时间:2012-01-11 11:45:56

标签: android facebook

我正在尝试在我的Android应用中使用Facebook SDK。这是片段:

Facebook myFacebook = new Facebook("123456789012345");
myFacebook.authorize(LogInScreen.this, 
    new String[] {
        "publish_stream", 
        "email", 
        "user_about_me", 
        "user_birthday", 
        "user_website", 
        "friends_photos", 
        "user_photos"},
    Facebook.FORCE_DIALOG_AUTH,
    new DialogListener(){

        @Override
        public void onCancel() {
            Log.i("Facebook", "Facebook - cancel");
        }

        @Override
        public void onComplete(Bundle arg0) {
            Log.i("Facebook", "Facebook - complete, AccessToken: " + myFacebook.getAccessToken());
        }

        @Override
        public void onError(DialogError arg0) {
            Log.i("Facebook", "Facebook - error");
        }

        @Override
        public void onFacebookError(FacebookError error) {
            Log.i("Facebook", "Facebook - facebookError: " + error);
                    try {
                        myFacebook.logout(LogInScreen.this);
                    } catch (MalformedURLException e) {
                        e.printStackTrace();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }}
    );
}
});

当我运行此代码时,我可以使用我的主Facebook帐户登录,但当我尝试使用任何其他fb帐户时,我收到错误“无法接收访问令牌”。我错过了什么吗?

4 个答案:

答案 0 :(得分:13)

问题是facebook应用程序设置为沙盒模式,因此只有开发者帐户才能从应用程序ID获取访问令牌。

答案 1 :(得分:2)

我有同样的问题,但沙箱不是解决方案。我对国家有一些限制,我的国家不在那里。我添加了它,它解决了我的问题。

答案 2 :(得分:0)

如果您放置权限offline_access,则令牌到期时间为0.

对于遇到此问题的其他任何人(如果您已经放置offline_access权限并稍后删除),请按以下步骤操作:

  • 转到您的Facebook个人资料设置并移除您的应用。
  • 然后再次登录。
  • 再次授予您的应用权限。

或者你可以这样做:

  • 转到您的Facebook个人资料设置>应用> Your_App 并删除“随时访问我的数据”权限。
  • 保存所做的更改。
  • 重新运行 Your_App (即现在没有offline_access权限)。

答案 3 :(得分:0)

就我而言,问题是我没有在Facebook应用配置中添加正确的Key Hash。我只添加了dbug Key Hash,但没有添加“生产”密钥,并且不断收到“无法接收访问令牌”错误。

可以像这样获得Key Hash:

  

keytool -exportcert -alias KEY_ALIAS -keystore CERT_STORE.jks | openssl sha1 -binary | openssl base64

只需确保别名,商店和密码正确无误。