"[[FBSDKAccessToken currentAccessToken] hasGranted:@" publish_actions "]"总是返回假



我是否试图验证我是否有publish_actions许可。总是有错误的。即使我要求并获得publish_actions并获得succeeded=TRUE,重新验证仍然返回false。

有什么想法吗?

bool bGranted_publish_actions=[[FBSDKAccessToken currentAccessToken] hasGranted:@"publish_actions"];
bool bGranted_user_photos=[[FBSDKAccessToken currentAccessToken] hasGranted:@"user_photos"];
if (!bGranted_user_photos || !bGranted_publish_actions ){
    [PFFacebookUtils linkUserInBackground:[PFUser currentUser] withPublishPermissions:@[@"publish_actions"] block:^(BOOL succeeded, NSError *error) {
        if (succeeded) {
            bool bGranted_publish_actionsV2=[[FBSDKAccessToken currentAccessToken] hasGranted:@"publish_actions"];

在解析SDK版本1.7.3。

中解决

弗兰克在上面的评论中提供的链接表明这是一个Facebook错误。必须等待下一个版本。

同时,这是一项工作。

workaround

在当前访问令牌上调用刷新后,请保留一组权限。您可以将它们保留在AppDelegate或仅在与Facebook的班级中。

[FBSDKAccessToken refreshCurrentAccessToken:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
        NSDictionary *resultDictionary = (NSDictionary *) result;
        NSArray *permissionsArray= [resultDictionary objectForKey:@"data"];
        NSMutableSet *permissionsSet = [NSMutableSet new];
        for (NSDictionary *permissionDic in permissionsArray) {
            if ([[permissionDic objectForKey:@"status"] caseInsensitiveCompare:@"granted"] == NSOrderedSame) {
                [permissionsSet addObject:[permissionDic objectForKey:@"permission"]];
            }
        }
        blockSelf.permissions = permissionsSet;
    }];

注意-blockSelf.permissions是对象调用刷新的NSSet属性。

最新更新