2016-06-14 69 views
4

我想分享与Facebook的消息。这里是代码:FBSDKLog缺少权限

RACSignal *sign = [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) { 
     if([[FBSDKAccessToken currentAccessToken] hasGranted:@"publish_actions"]){ 
      NSLog(@"1 blck"); 
      NSLog(@"curr tok? %@", [FBSDKAccessToken currentAccessToken]); 
      [subscriber sendNext:@YES]; 
      [subscriber sendCompleted]; 
     } else { 
      NSLog(@"2 blck"); 
      FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init]; 
      [login logOut]; 
      login.loginBehavior = FBSDKLoginBehaviorWeb; 
      [login logInWithPublishPermissions:@[@"publish_actions"] fromViewController:APP.window.rootViewController handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) { 
       NSLog(@"log passed by"); 
       self.isExecuting = YES; 
       if (error) { 
        NSError *err = [NSError errorWithDomain:@"ru.myServer.fb" code:-3 userInfo:@{NSLocalizedDescriptionKey:error.localizedDescription}]; 
        [subscriber sendError:err]; 
       } else if (result.isCancelled) { 
        NSError *err = [NSError errorWithDomain:@"ru.myServer.fb" code:-4 userInfo:@{NSLocalizedDescriptionKey:@"Недоступно"}]; 
        [subscriber sendError:err]; 
       } else { 
        NSString *strToken = result.token.tokenString; 
        NSString *strUserId = result.token.userID; 
        NSDictionary *dctProps = @{@"token":strToken, @"user_id":strUserId}; 
        [subscriber sendNext:dctProps]; 
        [subscriber sendCompleted]; 
       } 
      }]; 
     } 

它很简单,即使你不熟悉反应可可。

出于某种原因,该代码的作品(发布消息)的一个账户,之前已经获得授权,但是当我尝试另一个ACC做分享新闻,它完整的块,但发送错误

FBSDKLog:警告:访问令牌丢失publish_actions权限

。显然,没有消息可以分享。

这是为什么发生?

回答

1

要允许与FBSDK您的应用程序内发布,你要问在登录的其他权限的用户:publish_actions

例子:

[loginManager logInWithPublishPermissions:@[@"publish_actions"] 
         fromViewController:self 
            handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) { 
    //TODO: process error or result. 
    }]; 

参考:
https://developers.facebook.com/docs/facebook-login/ios

+0

publish_actions不是读取权限。 – CBroe

+1

我对文档非常熟悉,谢谢。您所说的并不会改变它不是_read_权限的事实,因此应该以不同的方式提出要求 - 请参阅https://developers.facebook.com/docs/facebook-login/ios/permissions#permissions -Login此外,[最佳做法](https://developers.facebook.com/docs/facebook-login/best-practices)由FB说不让问权限的应用程序总结如初始用户登录publish_actions,但只有当第一次实际需要权限时(即用户主动点击一个触发共享的按钮) – CBroe

+0

@CBroe好吧,我错了......我不知道为什么。将更新答案并删除我的“几乎粗鲁”的评论;) –

1

对于所有可能感兴趣的人。

有一个在代码没有问题上面。问题是,facebook需要批准和审核应用程序,然后才为用户提供public_actions,而不是管理员在https://developers.facebook.com

所以,你必须遵循从Facebook团队的具体说明,以使可用的权限范围。

相关问题