ios - 与 FacebookSDK 集成时获取个人资料信息

标签 ios swift facebook

我一直在将 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

最佳答案

您可能必须转到 Targets->Capabilities 并启用钥匙串(keychain)共享(它可以为您的应用程序访问钥匙串(keychain)),according to this answer.

关于ios - 与 FacebookSDK 集成时获取个人资料信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42124361/

相关文章:

swift - 如何创建一个 Swift 变量,在某些条件下它可以返回不同的值,但通常它只返回自身?

android - 如何从 Android 应用程序向 Facebook Messenger 分享纯文本

ios - iOS 和 Heroku 上的 FB 平台示例应用 WishList 失败

ios - 自定义 Action Controller ,Swift

ios - 标签栏背景颜色无法正常显示

ios - 如何在纵向方向上关闭 UISplitController 的模态呈现

html - 从 HTML 源 Swift 中提取链接

ruby-on-rails - 混合使用 omniauth 和 fbgraph gems 时,我无法获得访问 key

ios - NSURLSession.sharedSession().dataTaskWithRequest 函数运行缓慢

objective-c - UIScrollview 事件将被包含的 UIButtons 捕获