与 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 获取用户信息?

集成Google登录并获取个人性别等信息

为旧版 Xcode 集成 Facebook SDK 以支持 iOS 5 和 iOS 6

Facebook SDK 与 Android Studio 的集成

Xcode FacebookSDK 检索好友列表