Ios 使用FBSDK的FbLogin有时工作速度非常慢
不要把它当作重复的问题,我提出这个问题是因为答案没有帮助, 集成对我来说很好,但是页面加载速度非常慢 加载登录屏幕需要很长时间。登录操作需要8-50秒或更长时间 有时加载身份验证屏幕需要10秒以上 以下代码用于FBLoginButtoActionIos 使用FBSDK的FbLogin有时工作速度非常慢,ios,swift,fbsdk,Ios,Swift,Fbsdk,不要把它当作重复的问题,我提出这个问题是因为答案没有帮助, 集成对我来说很好,但是页面加载速度非常慢 加载登录屏幕需要很长时间。登录操作需要8-50秒或更长时间 有时加载身份验证屏幕需要10秒以上 以下代码用于FBLoginButtoAction func loginButton(loginButton: FBSDKLoginButton!, didCompleteWithResult result: FBSDKLoginManagerLoginResult!, error: NSError!)
func loginButton(loginButton: FBSDKLoginButton!, didCompleteWithResult result: FBSDKLoginManagerLoginResult!, error: NSError!){
if(error != nil){
print(error.localizedDescription)
return
}
if result.isCancelled{
showAlert(title: "Login Cancelled", message: "You have cancelled login through Facebook")
}
if FBSDKAccessToken.currentAccessToken() != nil{
print("Logged in")
}
}
您可以使用NSNotification方法进行FBlogin。 只需遵循以下步骤
self.btnFBLogin.delegate = self
self.btnFBLogin.readPermissions = ["public_profile","email","user_friends"]
FBSDKProfile.enableUpdatesOnAccessTokenChange(true)
NSNotificationCenter.defaultCenter().addObserver(self, selector: "getUserProfile:", name: FBSDKProfileDidChangeNotification, object: nil)
func getUserProfile(notification : NSNotification)
{
let accessToken = FBSDKAccessToken.currentAccessToken()
if(accessToken != nil)
{
let req = FBSDKGraphRequest(graphPath: "me", parameters: ["fields":"email,name"], tokenString: accessToken.tokenString, version: nil, HTTPMethod: "GET")
req.startWithCompletionHandler({ (connection, result, error : NSError!) -> Void in
if(error == nil)
{
print("result \(result)")
let userInfo = result as AnyObject
if let email = userInfo.valueForKey("email") as? NSString
{
print(email)
}
else
{
let loginManager = FBSDKLoginManager()
loginManager.logOut()
}
}
else
{
print("error \(error)")
}
})
}
}
注意:不要在FB委托方法中写入任何逻辑。就放在那里
我认为这将有助于你bcz它对我来说很好。:) 您可以使用NSNotification方法进行FBlogin。 只需遵循以下步骤
self.btnFBLogin.delegate = self
self.btnFBLogin.readPermissions = ["public_profile","email","user_friends"]
FBSDKProfile.enableUpdatesOnAccessTokenChange(true)
NSNotificationCenter.defaultCenter().addObserver(self, selector: "getUserProfile:", name: FBSDKProfileDidChangeNotification, object: nil)
func getUserProfile(notification : NSNotification)
{
let accessToken = FBSDKAccessToken.currentAccessToken()
if(accessToken != nil)
{
let req = FBSDKGraphRequest(graphPath: "me", parameters: ["fields":"email,name"], tokenString: accessToken.tokenString, version: nil, HTTPMethod: "GET")
req.startWithCompletionHandler({ (connection, result, error : NSError!) -> Void in
if(error == nil)
{
print("result \(result)")
let userInfo = result as AnyObject
if let email = userInfo.valueForKey("email") as? NSString
{
print(email)
}
else
{
let loginManager = FBSDKLoginManager()
loginManager.logOut()
}
}
else
{
print("error \(error)")
}
})
}
}
注意:不要在FB委托方法中写入任何逻辑。就放在那里
我认为这将有助于你bcz它对我来说很好。:)