我一直致力于通过 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/