2015-03-25 37 views
1

我的登錄控制器中有代碼,用於檢查用戶是否授予了某些權限。該代碼工作了幾個星期,但直到最近它停止工作,因爲FBSession.activeSession()。權限返回零而不是權限列表Facebook iOS SDK返回無權限的列表

任何人都有類似的問題或知道可能是什麼原因? 我使用解析+ Facebook的 這裏是我的代碼(SWIFT)

if FBSession.activeSession().state != FBSessionState.Open { 

    PFFacebookUtils.logInWithPermissions(permissions, block: { (user: PFUser?, error: NSError?) -> Void in 
     if user == nil { 
      if error != nil { 
       println("User cancelled fb login") 
      } else { 
       println("Error with login: \(error)") 
      } 
     } else { 
      if user!.isNew { 
       println("Brand new user signed up!") 
      } else { 
       println("Returning user logged in!") 
      } 
      self.voiceMeAPI.requestDataForUserMe { (finished) ->() in 

       //This is printing nil 
       println(FBSession.activeSession().permissions) 

       if contains(FBSession.activeSession().permissions as [String], "user_friends") { 
        self.updateFriendsThenPushToHomeViewController(isNewUser: user!.isNew) 
       } else { 
        dispatchOnMainQueueAfterDelay(0, {() ->() in 
         self.presentViewController(self.noFriendsListAlertController, animated: true, completion: nil) 
        }) 
       } 
      } 

     } 
    }) 
+0

任何運氣?我有同樣的問題 – bmurmistro 2015-04-12 17:15:23

+0

什麼都沒有:/未能獲得權限列表 – Lneuner 2015-04-12 17:20:39

回答

0

確保您設置的權限,你想他們是什麼。 正下方的類添加:

let permissions = ["public_profile", "email", "user_friends"] 
+1

是的,但用戶仍可以在通過FB OAuth時編輯其中一些權限。因此,我需要檢查是否正確的權限被授予 – Lneuner 2015-04-14 19:59:25

1

一些docs從Facebook的SDK頁面的可能有你想要的東西。特別是標題爲「使用自定義登錄用戶界面」的部分。

下面是從Facebook的SDK文檔對象 - C:

FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init]; 
[login logInWithReadPermissions:@[@"email"] handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) { 
    if (error) { 
    // Process error 
    } else if (result.isCancelled) { 
    // Handle cancellations 
    } else { 
    // If you ask for multiple permissions at once, you 
    // should check if specific permissions missing 
    if ([result.grantedPermissions containsObject:@"email"]) { 
     // Do work 
    } 
    } 
}]; 

這是斯威夫特(未經測試!):

var login: FBSDKLoginManager = FBSDKLoginManager() 
login.logInWithReadPermissions(["email"], handler: { (result:FBSDKLoginManagerLoginResult!, error:NSError!) -> Void in 
    if (error != nil){ 
     //Process error 
    }else if result.isCancelled{ 
     //Handle cancellations 
    }else{ 
     // If you ask for multiple permissions at once, you 
     // should check if specific permissions missing 
     if result.grantedPermissions.contains("email"){ 
      //Do work 
     } 
    } 
    }) 
+0

我該怎麼辦,如果 如果result.grantedPermissions.contains(「電子郵件」){// 做的工作 } 沒有得到電子郵件 – 2016-08-22 11:28:08