android - 验证访问 token : The user has not authorized application. Facebook SDK 4 时出错

标签 android facebook facebook-sdk-4.0 facebook-permissions

情况是这样的:

如果我之前通过

授予我的应用程序读取权限
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/

相关文章:

objective-c - 更新 iOS 9 和 Facebook sdk 4.6 后登录窗口打不开

java - Android Gradle 将外部库和嵌套的外部库添加到项目中

Android图库可绘制错误

android - Android Fragment 中的按钮出现 NullPointerException onClick

Facebook App - 获取总用户数

android - Facebook SDK 并使用 ShareDialog 问题共享 Play Store 应用程序链接

android - 使用 html 和 TextView 在 android 小部件上显示图像

c# - 我们如何创建自定义共享对象?

android - Facebook android API 函数 executeGraphPathRequestAsync 未给出预期结果

facebook - 快速将 Facebook "name"添加到 PFUser ["fullname"]