与 FacebookSDK 集成时获取个人资料信息
Posted
技术标签:
【中文标题】与 FacebookSDK 集成时获取个人资料信息【英文标题】:Fetching profile info when integrating with FacebookSDK 【发布时间】:2017-02-08 21:53:38 【问题描述】:我一直在将 FacebookSDK 与堆栈溢出和一些教程集成,但它对我来说无法正常工作。我无法获取个人资料数据。这个方法甚至没有被调用。只出现“完成登录”。登录过程正在运行,但注销选项从未像应有的那样出现在按钮上。感谢您提供任何提示。
import Foundation
import UIKit
import FBSDKLoginKit
import FBSDKCoreKit
class mainView: UIViewController, FBSDKLoginButtonDelegate
@IBOutlet weak var navigationBar: UINavigationBar!
@IBOutlet weak var mainImage: UIImageView!
@IBOutlet weak var getRecipeBtn: UIButton!
@IBOutlet weak var addImageBtn: UIButton!
let loginButton: FBSDKLoginButton =
let button = FBSDKLoginButton()
button.readPermissions = ["email"]
return button
()
override func viewDidLoad()
super.viewDidLoad()
view.addSubview(loginButton)
loginButton.center = view.center
loginButton.delegate = self
if let token = FBSDKAccessToken.current()
fetchProfile()
func loginButton(_ loginButton: FBSDKLoginButton!, didCompleteWith result: FBSDKLoginManagerLoginResult!, error: Error!)
print("completed login")
func loginButtonWillLogin(_ loginButton: FBSDKLoginButton!) -> Bool
return true
func loginButtonDidLogOut(_ loginButton: FBSDKLoginButton!)
func fetchProfile()
print("fetch profile")
FBSDKGraphRequest(graphpath: "me", parameters: ["fields": "email, first_name, last_name, id"]).start(completionHandler: (connection, result, error) in guard
let result = result as? NSDictionary,
let email = result["email"] as? String,
let user_name = result["fist_name"] as? String,
let user_id = result["id"] as? String
else
return
print(email)
)
这是我的控制台日志部分:(我已将 fbauth 添加到 info.plist。)
RecipeMaster[19428:630625] -canOpenURL:URL 失败:“fbauth2:/” - 错误:“操作无法完成。(OSStatus 错误 -10814。)” 完成登录
2017-02-08 22:48:23.308043 RecipeMaster[19428:640928] PAC 获取失败并出现错误 [NSURLErrorDomain:-1003]
2017-02-08 22:48:23.308482 RecipeMaster[19428:641029] [] nw_proxy_resolver_create_parsed_array PAC 评估错误:NSURLErrorDomain:-1003
【问题讨论】:
How to use Facebook ios SDK on iOS 10的可能重复 实际上,在 Target 的 Capabilities 中开启 Keychain Sharing 对我不起作用。还是同样的问题。 【参考方案1】:您可能必须转到 Targets->Capabilities 并启用钥匙串共享(它可以让您的应用访问钥匙串),according to this answer.
【讨论】:
实际上,在 Target 的 Capabilities 中开启 Keychain Sharing 对我不起作用。还是同样的问题。 did you put func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool // 应用启动后自定义的覆盖点。 FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions) 在 app.delegate 上返回 true 是的,现在发布了答案。不过,我无法打印个人资料信息。【参考方案2】:我已经修复了第一个错误 -canOpenURL: failed for URL: "fbauth2:/ 在我的 AppDelegate 中设置了不同的方法(带有 3.0 实现的答案)-> Facebook SDK sign in with Swift 3 iOS 10
【讨论】:
我无法获取和打印我的个人资料信息。这个错误 [NSURLErrorDomain:-1003] 仍然出现。以上是关于与 FacebookSDK 集成时获取个人资料信息的主要内容,如果未能解决你的问题,请参考以下文章
用户尝试登录时,iOS App 中的 Facebook 集成问题
如何在 ios 中使用 facebook sdk 4.1 获取用户信息?
为旧版 Xcode 集成 Facebook SDK 以支持 iOS 5 和 iOS 6