情况是这样的:
如果我之前通过
授予我的应用程序读取权限LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("email"));
然后,当我需要共享时,我通过以下方式请求发布权限:
LoginManager.getInstance().logInWithPublishPermissions(getActivity(), Arrays.asList("publish_actions"));
一切正常,直到我删除了 Web 应用程序的权限。
如果应用程序被终止或停止并且我需要共享我将检查我是否仍然拥有权限:
if(userAuthorizedMyApp()){
LoginManager.getInstance().logInWithPublishPermissions(this, Arrays.asList("publish_actions"));
} else {
LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("email"));
}
方法 userAuthorizedMyApp() 返回 false(accessToken 为空):
private boolean userAuthorizedMyApp() {
boolean authorized;
AccessToken accessToken = AccessToken.getCurrentAccessToken();
if(DEBUG) Log.v(TAG, "accessToken [" + accessToken +"]");
if(accessToken != null){
Set<String> currentPermissions = accessToken.getPermissions();
authorized = currentPermissions.contains("public_profile");
} else {
authorized = false;
}
if(DEBUG) Log.v(TAG, "userAuthorizedMyApp[" + authorized +"]");
return authorized;
}
然后我尝试像第一次一样进行常规登录:
LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("email"));
我收到:
public void onError(FacebookException error)
onError, error {HttpStatus: -1, errorCode: 190, errorType: null, errorMessage: Error validating access token: The user has not authorized application 123456789123456.}
知道我做错了什么吗?
最佳答案
只需执行以下操作:
@Override
public void onError(FacebookException error) {
Timber.e(error, "Error during facebook login");
AccessToken.setCurrentAccessToken(null);
LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("email"))
}
关于android - 验证访问 token : The user has not authorized application. Facebook SDK 4 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29822082/