Cul*_*tes 40 facebook-sdk-4.0 swift
TL; TR:如何使用facebook SDK 4.4获取在我的应用程序上登录的用户的电子邮件和名称
到目前为止,我已经设法登录工作,现在我可以从应用程序的任何位置获取当前访问令牌.
我如何配置登录视图控制器和Facebook登录按钮:
class LoginViewController: UIViewController, FBSDKLoginButtonDelegate {
@IBOutlet weak var loginButton: FBSDKLoginButton!
override func viewDidLoad() {
super.viewDidLoad()
if(FBSDKAccessToken.currentAccessToken() == nil)
{
print("not logged in")
}
else{
print("logged in already")
}
loginButton.readPermissions = ["public_profile","email"]
loginButton.delegate = self
}
//MARK -FB login
func loginButton(loginButton: FBSDKLoginButton!, didCompleteWithResult result: FBSDKLoginManagerLoginResult!, error: NSError!) {
//logged in
if(error == nil)
{
print("login complete")
print(result.grantedPermissions)
}
else{
print(error.localizedDescription)
}
}
func loginButtonDidLogOut(loginButton: FBSDKLoginButton!) {
//logout
print("logout")
}
Run Code Online (Sandbox Code Playgroud)
现在在我的主视图中,我可以获得访问令牌,如下所示:
let accessToken = FBSDKAccessToken.currentAccessToken()
if(accessToken != nil) //should be != nil
{
print(accessToken.tokenString)
}
Run Code Online (Sandbox Code Playgroud)
如何从登录的用户处获取姓名和电子邮件,我使用较旧的SDK或使用Objective-C查看了许多问题和答案.
Cul*_*tes 58
我已经fields在android中使用了,所以我想在IOS中尝试它,它可以工作.
let req = FBSDKGraphRequest(graphPath: "me", parameters: ["fields":"email,name"], tokenString: accessToken.tokenString, version: nil, HTTPMethod: "GET")
req.startWithCompletionHandler({ (connection, result, error : NSError!) -> Void in
if(error == nil) {
print("result \(result)")
} else {
print("error \(error)")
}
}
)
Run Code Online (Sandbox Code Playgroud)
结果将打印:
result {
email = "email@example.com";
id = 123456789;
name = "Your Name";
}
Run Code Online (Sandbox Code Playgroud)
发现这些字段与User端点相同,请参阅此链接,您可以在其中查看可以获得的所有字段.
Cha*_*Raj 27
let request = GraphRequest.init(graphPath: "me", parameters: ["fields":"first_name,last_name,email, picture.type(large)"], accessToken: AccessToken.current, httpMethod: .GET, apiVersion: FacebookCore.GraphAPIVersion.defaultVersion)
request.start({ (response, requestResult) in
switch requestResult{
case .success(let response):
print(response.dictionaryValue)
case .failed(let error):
print(error.localizedDescription)
}
})
Run Code Online (Sandbox Code Playgroud)
JT5*_*501 18
对于Swift 3和Facebook SDK 4.16.0:
func getFBUserInfo() {
let request = GraphRequest(graphPath: "me", parameters: ["fields":"email,name"], accessToken: AccessToken.current, httpMethod: .GET, apiVersion: FacebookCore.GraphAPIVersion.defaultVersion)
request.start { (response, result) in
switch result {
case .success(let value):
print(value.dictionaryValue)
case .failed(let error):
print(error)
}
}
}
Run Code Online (Sandbox Code Playgroud)
并将打印:
Optional(["id": 1xxxxxxxxxxxxx, "name": Me, "email": stackoverflow@gmail.com])
Run Code Online (Sandbox Code Playgroud)
斯威夫特 5
将使用该类检索用户电子邮件、名字、姓氏和他们的idGraphRequest:
// Facebook graph request to retrieve the user email & name
let token = AccessToken.current?.tokenString
let params = ["fields": "first_name, last_name, email"]
let graphRequest = GraphRequest(graphPath: "me", parameters: params, tokenString: token, version: nil, httpMethod: .get)
graphRequest.start { (connection, result, error) in
if let err = error {
print("Facebook graph request error: \(err)")
} else {
print("Facebook graph request successful!")
guard let json = result as? NSDictionary else { return }
if let email = json["email"] as? String {
print("\(email)")
}
if let firstName = json["first_name"] as? String {
print("\(firstName)")
}
if let lastName = json["last_name"] as? String {
print("\(lastName)")
}
if let id = json["id"] as? String {
print("\(id)")
}
}
}
Run Code Online (Sandbox Code Playgroud)
通过Facebook登录后,请调用以下功能。
func getUserDetails(){
if(FBSDKAccessToken.current() != nil){
FBSDKGraphRequest(graphPath: "me", parameters: ["fields": "id,name , first_name, last_name , email"]).start(completionHandler: { (connection, result, error) in
guard let Info = result as? [String: Any] else { return }
if let userName = Info["name"] as? String
{
print(userName)
}
})
}
}
Run Code Online (Sandbox Code Playgroud)
Facebook的IOS SDK获取用户名和电子邮件迅速3
FBSDKGraphRequest(graphPath: "me", parameters: ["fields": "id, name, first_name, last_name, email"]).start(completionHandler: { (connection, result, error) -> Void in
if (error == nil) {
let fbDetails = result as! NSDictionary
print(fbDetails)
} else {
print(error?.localizedDescription ?? "Not found")
}
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
36105 次 |
| 最近记录: |