2

我試圖驗證我是否擁有publish_actions權限。總是被弄虛作假。即使我要求並得到publish_actions並得到succeeded=TRUE,重新驗證仍然返回false。「[[FBSDKAccessToken currentAccessToken] hasGranted:@」publish_actions「]」總是返回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"]; 
+1

在這裏得到同樣的結果。 @Franck你是否設法找到解決方案? – RJiryes

+0

仍然沒有解決方案。 :( – Franck

+0

我已經在https://developers.facebook.com/bugs/713281905449321/上發佈了一個錯誤報告。我可以推薦你發佈一個回覆來確認你還能重現嗎?!它可以幫助你:) – Franck

回答

2

解析解析sdk版本1.7.3。

0

Franck在上面評論中提供的鏈接顯示這是一個Facebook Bug。必須等待下一個版本。

同時,這裏有一個解決方法。

解決方法

保持一組權限調用在當前訪問令牌刷新之後。你可以將它們保留在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屬性。