2015-03-25 65 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