ios - 如何获取 Facebook 用户资料(swift)

标签 ios swift facebook

我一直致力于通过 swift 获取用户个人资料信息。 没有错误,但我想检查这段代码是否正常工作,因为下面的错误,我无法在模拟器中检查。

错误:由于模拟器错误,回退到在 NSUserDefaults 中存储访问 token

据我所知,这个错误不会发生在真实设备上。

class FetchUserProfileController: UIViewController {


@IBOutlet weak var userFullName: UILabel!
@IBOutlet weak var userProfileImage: UIImageView!


override func viewDidLoad() {
    super.viewDidLoad()

    userFullName.text = ""

    if let _ = FBSDKAccessToken.current()
    {
        fetchUserProfile()
    }

}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()

}


func fetchUserProfile()
{
    let graphRequest : FBSDKGraphRequest = FBSDKGraphRequest(graphPath: "me", parameters: ["fields":"id, email, name, picture.width(200).height(200)"])

    graphRequest.start(completionHandler: { (connection, result, error) -> Void in

        if ((error) != nil)
        {
            print("Error took place: \(error)")
        }
        else
        {
            print("Print entire fetched result: \(result)")

            let fbData:[String:AnyObject] = result as! [String : AnyObject]

            let userName : NSString? = fbData["name"]! as? NSString
            let facebookID : NSString? = fbData["id"]! as? NSString

            if let imageURL = ((fbData["picture"] as? [String: Any])?["data"] as? [String: Any])?["url"] as? String {
                //Download image from imageURL
            }

        }
    })
}

最佳答案

您的代码应该可以在普通设备上运行。 Facebook 登录 SDK 阻止 iOS 模拟器缓存访问 token 。如果您没有真实设备并且必须在模拟器上检查登录,请执行以下操作:

1) 在您的项目中搜索FBSDKKeychainStore.m:

2) 转到第 94 行并在 [[NSUserDefaults standardUserDefaults] setObject:value forKey:key 之前添加 key = [NSString stringWithFormat:@"%@_fix", key]; ];

3) 转到第 135 行并添加相同的 key = [NSString stringWithFormat:@"%@_fix", key]; 就在 [[NSUserDefaults standardUserDefaults] setObject:value 之前forKey:key];

它仍会打印您提到的错误行,但您将能够使用模拟器登录 facebook

关于ios - 如何获取 Facebook 用户资料(swift),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46822440/

相关文章:

ios - Phonegap ( cordova ) 2.4.0 启动画面显示缩小

Swift:如何填充 UITableView

ios - 如何设置本地通知(早上8点:00AM and Evening 8:00PM) in ios?

ios - 如何(我可以)从 NSFetchedResultsController 获取其他部分的内容吗?

ios - iOS检测何时从后台关闭应用程序?

javascript - FBJS JavaScript getElementById 返回空值?

Facebook : Given URL is not allowed by the Application configuration

ios - Swift 在 TableView 中展开 Optional 值时意外发现 nil

xcode - 调试与发布版本??代码

asp.net - Facebook 开发者 : making a permission optional