iOS登录与Facebook不返回电子邮件甚至参数和权限给出

Posted

技术标签:

【中文标题】iOS登录与Facebook不返回电子邮件甚至参数和权限给出【英文标题】:iOS login with facebook not returning email even parameter and permission given 【发布时间】:2016-04-27 09:48:08 【问题描述】:

我已阅读有关此问题的所有有关 *** 的帖子,但没有任何效果。

我尝试使用 facebook 登录,它工作正常,但没有返回电子邮件地址。

这是我的 FBSDKGraphRequest 代码

let request = FBSDKGraphRequest(graphpath:"me", parameters: ["fields":"email,first_name,gender"]);

    request.startWithCompletionHandler  (connection : FBSDKGraphRequestConnection!, result : AnyObject!, error : NSError!) -> Void in
        if error == nil 
            print("The information requested is : \(result)")
         else 
            print("Error getting information \(error)");
        
    

在控制台中显示

The information requested is : 
    "first_name" = MyName;
     gender = male;
     id = 252013518608849;
 

我的登录按钮代码是

let loginButton: FBSDKLoginButton = 
    let button = FBSDKLoginButton()
    button.readPermissions = ["email"];
    return button
()

我在 viewdidload 中添加了这个按钮 view.addSubview(loginButton)

我不知道为什么它没有返回电子邮件。

【问题讨论】:

用户的个人资料中是否有已验证的电子邮件地址? 感谢 CBroe....它现在可以工作了 【参考方案1】:

请在下面的代码上写下您想要打开facebook的按钮操作。

    let login = FBSDKLoginManager()
    login .logInWithReadPermissions(["public_profile", "email", "user_friends","user_birthday","user_friends","user_education_history","user_hometown"], fromViewController: self)  (result, error) -> Void in


        if !(error == nil)
        
            NSLog("Process error");
        
        else if result.isCancelled
        
            NSLog("Cancelled")
            FBSDKLoginManager().logOut()
        
        else
        
            NSLog("Logged in");
            let fbloginresult : FBSDKLoginManagerLoginResult = result
            if(fbloginresult.grantedPermissions.contains("email"))
            
                self.returnUserData()
                //fbLoginManager.logOut()
            

        
    

    FBSDKLoginManager().logOut()

它会很好地为你工作。提供你的反馈。快乐的编码。

【讨论】:

我们 self.returnUserData() 是什么? self.returnUserdata() 是编写以下代码的函数名。 let request = FBSDKGraphRequest(graphPath:"me", parameters: ["fields":"email,first_name,gender"]); request.startWithCompletionHandler (connection : FBSDKGraphRequestConnection!, result : AnyObject!, error : NSError!) -> Void in if error == nil print("请求的信息是: (result)") else print("错误获取信息(错误)”); 不,它仍然没有返回电子邮件 ID okkk 现在在写 self.returnUserData 的地方写下这段代码。 if((FBSDKAccessToken.currentAccessToken()) != nil) FBSDKGraphRequest(graphPath: "me", parameters: ["fields": "id, name, first_name,birthday,hometown,friends,gender,last_name,picture.type( large), email,cover"]).startWithCompletionHandler( (connection, result, error) -> Void in if (error == nil) print(result) ) 返回生日、名字、朋友、性别、身份证、姓氏、姓名、图片,但不返回电子邮件地址

以上是关于iOS登录与Facebook不返回电子邮件甚至参数和权限给出的主要内容,如果未能解决你的问题,请参考以下文章

放大联合登录不返回 Facebook 的电子邮件

Facebook 登录在用户个人资料中返回“未定义”字段,并且不返回电子邮件。 MEANJs + Passport-facebook

在 iOS9 和 Swift2 中使用 Parse 登录 Facebook

Facebook SSO IOS 不返回应用

用户尝试登录时,iOS App 中的 Facebook 集成问题

Meteor 1.3+ 帐户 Facebook 登录 iOS 不工作