gpt4 book ai didi

facebook - 检索电子邮件 FacebookSDK 和 Swift

转载 作者:搜寻专家 更新时间:2023-10-30 22:05:11 25 4
gpt4 key购买 nike

我在我的应用程序中成功实现了 facebook 登录,但我无法查询/检索用户的电子邮件地址。

我有以下代码:

import UIKit

class testViewController: UIViewController, FBSDKLoginButtonDelegate {

override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.

if (FBSDKAccessToken.currentAccessToken() != nil)
{
// User is already logged in, do work such as go to next view controller.

// Or Show Logout Button
let loginView : FBSDKLoginButton = FBSDKLoginButton()
self.view.addSubview(loginView)
loginView.center = self.view.center
loginView.readPermissions = ["public_profile", "email", "user_friends"]
loginView.delegate = self
self.returnUserData()
}
else
{
let loginView : FBSDKLoginButton = FBSDKLoginButton()
self.view.addSubview(loginView)
loginView.center = self.view.center
loginView.readPermissions = ["public_profile", "email", "user_friends"]
loginView.delegate = self
}

}

// Facebook Delegate Methods

func loginButton(loginButton: FBSDKLoginButton!, didCompleteWithResult result: FBSDKLoginManagerLoginResult!, error: NSError!) {
println("User Logged 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
}

self.returnUserData()
}

}

func loginButtonDidLogOut(loginButton: FBSDKLoginButton!) {
println("User Logged Out")
}

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)")
let userName : NSString = result.valueForKey("name") as! NSString
println("User Name is: \(userName)")
let userEmail : NSString = result.valueForKey("email") as! NSString
println("User Email is: \(userEmail)")
}
})
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}

}

以及 println 输出:

fetched user: {
id = 808101565906152;
name = "Marcelo Pontes Machado";
}

当我尝试显示电子邮件时,我得到了一个空值。

我认为代码是正确的,也许是我错过导入的一些 SDK?

最佳答案

将你想要从 Graph 请求中返回的字段放入你的参数中

FBSDKGraphRequest(graphPath: "me", parameters: ["fields":"id,email,name,picture.width(480).height(480)"]).startWithCompletionHandler({

因为 Graph API 有时可能只返回最少量的信息,除非另有要求。

关于facebook - 检索电子邮件 FacebookSDK 和 Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31570295/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com