我刚刚为我的 iOS 应用程序将我的 Facebook SDK“升级”到 4.0。
我的登录工作正常,但是,根据文档,我现在应该使用 FBSDKProfile.currentProfile()
来访问配置文件信息。
但是,这个值似乎总是nil
,即使正在显示我的个人资料图片(通过FBSDKProfilePictureView
)和我的FBSDKAccessToken.currentAccessToken()
不是 nil
。
这是我的登录ViewController:
import UIKit
class LoginViewController: UIViewController, FBSDKLoginButtonDelegate {
@IBOutlet weak var fbLoginButton: FBSDKLoginButton!
@IBOutlet weak var fbProfilePicture: FBSDKProfilePictureView! //displays a picture
override func viewDidLoad() {
super.viewDidLoad()
self.fbLoginButton.delegate = self
FBSDKProfile.enableUpdatesOnAccessTokenChange(true)
if FBSDKAccessToken.currentAccessToken() != nil {
println("\(FBSDKAccessToken.currentAccessToken().userID)") //works
}
self.fbLoginButton.readPermissions = ["public_profile", "email", "user_friends"]
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
func loginButton(loginButton: FBSDKLoginButton!, didCompleteWithResult result: FBSDKLoginManagerLoginResult!, error: NSError!) {
println(FBSDKProfile.currentProfile()) //is nil
}
func loginButtonDidLogOut(loginButton: FBSDKLoginButton!) {
}
}
有什么想法吗?
最佳答案
不要忘记FBSDKProfile.enableUpdatesOnAccessTokenChange(true)
!!我为此苦苦挣扎了一段时间,直到我在 docs 中发现它.然后订阅 FBSDKProfileDidChangeNotification 上的通知应该适用于 FBSDKLoginButton。
完整示例...我通过 Interface Builder 连接 loginButton
class LoginController: UIViewController, FBSDKLoginButtonDelegate {
@IBOutlet var loginButton: FBSDKLoginButton!
override func viewDidLoad() {
super.viewDidLoad()
loginButton.delegate = self;
FBSDKProfile.enableUpdatesOnAccessTokenChange(true)
NSNotificationCenter.defaultCenter().addObserver(self, selector: "onProfileUpdated:", name:FBSDKProfileDidChangeNotification, object: nil)
}
func onProfileUpdated(notification: NSNotification)
{
}
func loginButton(loginButton: FBSDKLoginButton!, didCompleteWithResult result: FBSDKLoginManagerLoginResult!, error: NSError!){
}
func loginButtonDidLogOut(loginButton: FBSDKLoginButton!) {
}
关于ios - 适用于 iOS 的 Facebook SDK v4.0 - FBSDKProfile currentProfile 未设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29292371/