1

使用 Facebook sdk 3.1,我想确保应用程序在我发送发布请求之前就具有“publish_stream”。

问题是 [FBSession.activeSession.permissions indexOfObject:@"publish_stream"] 永远不会返回 NSNotFound 即使用户在登录期间选择不允许。这自然会导致问题,因为我假设我有权发送帖子但它返回 HTTP状态码 403,因为我实际上没有所需的权限。

IS 是一个错误,或者是否有其他方法可以检查活动会话的权限。

4

4 回答 4

1

如果您对当前与您正在使用的访问令牌关联的所有权限进行 API 调用,/me/permissions则将返回

于 2012-09-27T16:49:52.930 回答
0

Facebook 确认这是 iOS SDK 中的一个错误:https ://developers.facebook.com/bugs/111727002307769

该错误仍然存​​在于 iOS SDK 3.1 中

/me/permissions一种解决方法是使用Igy 建议的API 调用检查权限。

于 2012-11-23T11:51:42.120 回答
0
[FBSession.activeSession.permissions indexOfObject:@"publish_stream"] != NSNotFound

上面的代码不是检查写权限的正确方法。

取而代之的是,请尝试以下方法:

-(BOOL)hasWritePermissions{

    NSArray *permissiones = [FBSession activeSession].permissions;
    for (NSString *permission in permissiones) {

        if ([permission isEqualToString:@"publish_actions"]) {
            return YES;
        }
    }

    return NO;
}
于 2014-03-25T13:30:42.943 回答
0

正如@Zorayr 所说,您可以执行以下操作。

NSArray *permissions = FBSession.activeSession.permissions;
    if ([permissions containsObject:@"publish_actions"]) {
       [self performNextTestWithLastPostID:nil];
    } else {
        ...
}
于 2015-03-12T15:52:06.463 回答