2016-06-14 66 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團隊的具體說明,以使可用的權限範圍。

相關問題