2013-04-03 63 views
2

我試圖檢查用戶是否已經授予發佈權限。如果他沒有在那之前授予的權限我通過瀏覽他的權限屏幕:requestNewPublishPermissionsiOS Facebook SDK 3.2通過圖路徑請求檢查權限

-(void)checkPermissions 
    { 
     // Get the most recent status 
     [FBRequestConnection 
     startWithGraphPath:@"me/permissions" 
     completionHandler:^(FBRequestConnection *connection, 
          id result, 
          NSError *error) { 
      if (!error) { 
        //This Condition Never Executed 

       if([[result objectForKey:@"data"] objectForKey:@"publish_actions"]) 
       { 
        //permissions exist 
       } 
       else 
       { 
        [self openSessionForPublishPermissions]; 
       } 
       NSString *permission = [[result objectForKey:@"data"] objectForKey:@"publish_actions"]; 

       NSLog(@"permissions data = %@",data); 
      } 
      else 
      { 
       NSLog(@"error"); //Control goes to this block 
      } 
     }]; 

    } 

在上面的代碼,如果塊永遠不會執行,它總是返回錯誤

凡(錯誤!)我錯了?我錯過了什麼嗎?

+1

也許你已經解決了這個問題,但爲了以防萬一...爲了理解錯在哪裏,需要分析返回的錯誤。 'NSLog(@「error」)'不提供信息。這個代碼'NSLog(@「%@」,error)'會給你更多關於錯誤的信息。 –

回答

2

您可以在活動會話中看到權限。下面是它是如何在HelloFacebookSample完成:

if ([FBSession.activeSession.permissions indexOfObject:@"publish_actions"] == NSNotFound) { 
    // permission does not exist 
} else { 
    // permission exists 
} 
+0

這對我不起作用。 FBSession.activeSession.permissions爲零 – Lucas

+0

如果您的會話具有訪問令牌,則權限可用。您是否檢查過FBSession.activeSession.accessTokenData不是零,並且它的accessToken已設置? –

+0

@Lucas,是的,Rephael是對的,至少'public_profile'將作爲權限可用。我認爲它不會空。 – Hemang

0

不用手動檢查的權限,你可以檢查會話處於活動狀態,並要求發佈權限:如果用戶已經授予的權限,一個額外的確認對話框不被張貼。請參見下面的代碼示例:

- (void)requestWritePermission:(UIViewController *)viewController channel:(NSString *)channel callback:(void(^)(BOOL success))callback 
{ 
    if ([FBSession.activeSession isOpen]) 
    { 
     [FBSession.activeSession requestNewPublishPermissions:@[@"publish_actions"] 
               defaultAudience:FBSessionDefaultAudienceFriends 
              completionHandler:^(FBSession *session, NSError *error) { 
               callback(error == nil); 
              }]; 
    } 
    else 
    { 
     // Attempt to request publish permission without read permission. 
    } 
} 

的代碼是不完整的,但應該讓你開始。