Facebook图表请求正在返回名称,但不是电子邮件 [英] Facebook Graph Request is returning name but not email

查看:97
本文介绍了Facebook图表请求正在返回名称,但不是电子邮件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用图形API从Facebook登录名返回我的姓名和电子邮件。这是我使用的代码 - 名称恢复正常,但电子邮件为nil:

I'm using the graph api to return my name and email from a Facebook login. This is the code I use - name comes back fine, but email is nil:

func getUserInfo() {
    let params = ["fields" : "email, name"]
    let graphRequest = GraphRequest(graphPath: "me", parameters: params)
    graphRequest.start {
        (urlResponse, requestResult) in

        switch requestResult {
        case .failed(let error):
            print("error in graph request:", error)
            break
        case .success(let graphResponse):
            if let responseDictionary = graphResponse.dictionaryValue {
                print(responseDictionary)

                if let name = responseDictionary["name"] {
                    self.nameLabel.text = "Logged in as: \n\(name)"
                }

                if let email = responseDictionary["email"] {
                    self.emailLabel.text = "Your email is: \n\(email)"
                } else {
                    self.emailLabel.text = "Your email is: "
                }
                print(responseDictionary["name"])
                print(responseDictionary["email"])
            }
        }
    }
}

是打印到我的控制台:

["id": 1653899307960705, "name": *my name removed for privacy*]
Optional(*my name removed for privacy*)
nil

我不知道我的代码是错误的还是只是一个错误 - 我将电子邮件和名称都指定为我的参数,但是您可以看到只有名称回来了。任何人知道为什么会发生这种情况?

I'm not sure if my code is wrong or it's just a bug - I specify both email and name as my parameters, but as you can see only the name comes back. Anyone know why this is happening?

推荐答案

我忘了采取电子邮件权限,所以在这里我分享你的代码许可。

I thing you forgot to take email permission, so here I am sharing you code to take permission.

func fbLoginInitiate()
    {
        let loginManager = FBSDKLoginManager()
        loginManager.logInWithReadPermissions(["public_profile", "email","user_friends"], handler: {(result:FBSDKLoginManagerLoginResult!, error:NSError!) -> Void in
            if (error != nil) {
                // Process error
                self.removeFbData()
            } else if result.isCancelled {
                // User Cancellation
                self.removeFbData()
            } else {
                //Success                
                if result.grantedPermissions.contains("email") && result.grantedPermissions.contains("public_profile") && result.grantedPermissions.contains("user_friends"){
                    //Here you need to call your function for graphRequest 
                    self.getUserInfo()
                } else {
                    //Handle error
                }
            }
        })
    }
func removeFbData()
    {
        //Remove FB Data
        let fbManager = FBSDKLoginManager()
        fbManager.logOut()
        FBSDKAccessToken.setCurrentAccessToken(nil)
    }

这篇关于Facebook图表请求正在返回名称,但不是电子邮件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆