我正在尝试处理当用户通过Facebook设置页面撤消对我的应用的访问权限时可能会在Facebook上共享时导致的错误。
Facebook文档说:
但是,请注意,这并不考虑到的情况 用户可能已撤消对您的应用的访问权限,或者用户已更改 他们的密码。您需要始终注意无效 access_token并重定向用户以重新授权您的应用。对于 无效的访问令牌,返回以下错误 onComplete()方法的'response'参数:
我的代码:
facebook.dialog(activity, "feed", params, new DialogListener()
{
@Override
public void onFacebookError(FacebookError e)
{
Log.printMethod();
showErrorToast(activity, e);
}
@Override
public void onError(DialogError e)
{
Log.printMethod();
showErrorToast(activity, e);
}
@Override
public void onComplete(Bundle values)
{
Log.printMethod();
}
@Override
public void onCancel()
{
Log.printMethod();
}
});
任何这些方法的问题都没有被调用,所以我无法得到用户已经撤销权限的线索,我需要让他再次授权。
相反,用户在webview中看到类似的内容。有任何想法吗?
答案 0 :(得分:1)
首先检查用户的权限: https://developers.facebook.com/docs/facebook-login/permissions/#checking
REST:
https://graph.facebook.com/USER_ID/permissions?access_token=APP_TOKEN https://graph.facebook.com/me/permissions?access_token=USER_TOKEN
JS:
FB.api('/me/permissions', function(response) {
var perms = response.data[0];
if ('publish_actions' in perms && perms.publish_actions === 1) {
// send
}
}
回复示例:
{
"data": [
{
"installed": 1,
"basic_info": 1,
"email": 1,
"publish_actions": 1,
"user_friends": 1
}
]
}