1

我正在尝试确定我的用户是否具有发布权限,我正在运行它的下一个代码:

private static final List<String> PERMISSIONS = Arrays.asList("publish_actions");
private void post(Bundle postParams){
    // Check for publish permissions    
    List<String> permissions = Session.getActiveSession().getPermissions();
    if (!isSubsetOf(PERMISSIONS, permissions)) {
        // Ask for permission logic
    }
    else{

        // Post logic
    }
}

private boolean isSubsetOf(Collection<String> subset, Collection<String> superset) {
    for (String string : subset) {
        if (!superset.contains(string)) {
            return false;
        }
    }
    return true;
}

但是,即使我从我在 facebook 中的应用程序帐户中删除权限,也会Session.getActiveSession().getPermissions() 返回一个包含该权限的列表。

我究竟做错了什么?如何清除 facebook 上的权限缓存?

4

1 回答 1

1

您的会话认为自己拥有的权限会缓存在设备上,因此一旦获得这些权限,它就会始终认为自己拥有这些权限。但是,如果用户将其从网站中删除,则发布请求将失败。您可以在此处查看 Facebook 建议您如何处理这些错误 - https://developers.facebook.com/docs/reference/api/errors/

在您提出请求之前,实际上无法知道用户已从网站上删除了权限。

如果您想随时了解您的应用所拥有的确切权限集,您可以随时向 /me/permissions 提出图表请求。

于 2013-06-10T18:25:19.343 回答