一尘不染

iOS Facebook SDK:尽管已授予权限,登录也不会返回电子邮件

swift

我正在尝试通过facebook
sdk获取信息,但到目前为止,我只获得用户的ID和名称,尽管我确定有可用的电子邮件,因为这是我的帐户。我一直在这里看几个答案,但到目前为止,没有一个解决我的问题。我在做什么错,为什么在我请求多个权限时它不返回更多数据?

这是我的代码:

fbLoginManager.logInWithReadPermissions(["public_profile", "email", "user_friends", "user_about_me", "user_birthday"], handler: { (result, error) -> Void in
        if ((error) != nil)
        {
            // Process error
            println("There were an error: \(error)")
        }
        else if result.isCancelled {
            // Handle cancellations
            fbLoginManager.logOut()
        }
        else {
            var fbloginresult : FBSDKLoginManagerLoginResult = result
            if(fbloginresult.grantedPermissions.contains("email"))
            {
                println(fbloginresult)
                self.returnUserData()
            }
        }
    })

以及获取用户数据的功能:

func returnUserData()
{
    let graphRequest : FBSDKGraphRequest = FBSDKGraphRequest(graphPath: "me", parameters: nil)
    graphRequest.startWithCompletionHandler({ (connection, result, error) -> Void in

        if ((error) != nil)
        {
            // Process error
            println("Error: \(error)")
        }
        else
        {
            println("fetched user: \(result)")

            if let userName : NSString = result.valueForKey("name") as? NSString {
                println("User Name is: \(userName)")
            }
            if let userEmail : NSString = result.valueForKey("email") as? NSString {
                println("User Email is: \(userEmail)")
            }
        }
    })
}

哪个返回:

fetched user: {
id = 55555555;
name = "Kali Aney";
}
User Name is: Kali Aney

阅读 253

收藏
2020-07-07

共1个答案

一尘不染

自Graph-API版本2.4(Pod版本4.4.0)以来,Facebook Graph API打破了其向后兼容性(以默认方式使用时)。

FB Graph-API 2.4不会为用户返回所有默认字段

若要解决此问题,您可以使用显式图形版本2.3:

[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:nil tokenString:[FBSDKAccessToken currentAccessToken].tokenString version:@"v2.3" HTTPMethod:nil]

在这种情况下,FB确保v2.3至少在两年后可用。 https://developers.facebook.com/docs/graph-
api/overview:

Graph
API有多个版本可随时访问。每个版本包含一组核心字段和边缘操作。我们保证从发布之日起至少2年内,这些核心API将在该版本中可用且未经修改。平台变更日志可以告诉您当前可用的版本。

要么

您可以通过询问您感兴趣的特定字段来使用新的Graph-API(v2.4):

[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:@{@"fields" : @"email,name"}]

2020-07-07