簡體   English   中英

Facebook iOS SDK權限列表返回零

[英]Facebook iOS SDK list of permissions returning nil

我的登錄控制器中有代碼,用於檢查用戶是否已授予某些權限。 該代碼可以正常工作幾個星期,但直到最近它才停止工作,因為FBSession.activeSession()。permissions返回nil而不是權限列表

其他人也有類似的問題,或者知道是什么原因嗎? 我正在使用Parse + 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)
                    })
                }
            }

        }
    })

Facebook SDK頁面中的某些文檔可能具有您想要的。 特別是標題為“使用自定義登錄UI”的部分。

這是來自Facebook SDK文檔的Obj-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
    }
  }
}];

這是Swift中的(未經測試!):

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
        }
    }
    })

確保將權限設置為所需的權限。 在課程的正下方添加:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM