【问题标题】:FBSDKLog missing permissionFBSDKLog 缺少权限
【发布时间】:2016-06-14 10:40:27
【问题描述】:

我想与 facebook 分享新闻。代码如下:

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];
                }
            }];
        }

它非常简单,即使您不熟悉 Reactive Cocoa。

由于某种原因,该代码适用于之前已授权的一个帐户(发布新闻),但是当我尝试为另一个帐户共享新闻时,它完成了阻止但发送错误

FBSDKLog:警告:访问令牌缺少 publish_actions 权限

。显然,没有新闻分享。

为什么会这样?

【问题讨论】:

    标签: ios objective-c facebook


    【解决方案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

    【讨论】:

    • 我对文档非常熟悉,谢谢。你所说的并没有改变它不是 reading 权限的事实,因此应该以不同的方式要求 - 参见developers.facebook.com/docs/facebook-login/ios/… Plus,best practices FB 总结说不允许在初始用户登录时向应用询问诸如 publish_actions 之类的权限,而仅在第一次实际需要权限时(即用户主动单击触发共享的按钮)。
    • @CBroe 好吧,我错了.. 我不知道为什么。将更新答案并删除我“几乎粗鲁”的评论;)
    【解决方案2】:

    所有可能感兴趣的人。

    上面的代码没有问题。问题是,Facebook 需要批准和审查应用程序,然后才能使用户使用 public_actions,而不是 https://developers.facebook.com 中的管理员。

    因此,您必须遵循 facebook 团队的特定指示才能使该权限范围可用。

    【讨论】:

      猜你喜欢
      • 2021-01-01
      • 2020-09-19
      • 1970-01-01
      • 2021-12-31
      • 2021-08-24
      • 1970-01-01
      • 2023-03-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多