我正在尝试在我的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帐户时,我收到错误“无法接收访问令牌”。我错过了什么吗?
答案 0 :(得分:13)
问题是facebook应用程序设置为沙盒模式,因此只有开发者帐户才能从应用程序ID获取访问令牌。
答案 1 :(得分:2)
我有同样的问题,但沙箱不是解决方案。我对国家有一些限制,我的国家不在那里。我添加了它,它解决了我的问题。
答案 2 :(得分:0)
如果您放置权限offline_access
,则令牌到期时间为0.
对于遇到此问题的其他任何人(如果您已经放置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
只需确保别名,商店和密码正确无误。