Facebook的login给我已经授权这个应用程序没有自动返回到应用程序
我的应用程序应该实现loginFacebook的,但我已经注意到,每次我想loginFacebook告诉我你已经授权这个应用程序,问题,如果我已经授权的应用程序的Facebook应该自动返回,而无需按下按键,因为我看到在其他应用程序?
看到附加的图像
我通过执行以下步骤解决了我的问题:
1-作为pipe理员login到您的Facebook到您的应用程序。
2-转到https://developers.facebook.com/apps/YOUR_FACEBOOK_APP_ID/summary 。
3转到设置 > 基本 > 本地IOS应用程序
4-将已configuration的iOS SSO:设置为启用
在iOS / Android中,FBAccessToken的过期时间长达60天。 当你在你的应用程序中执行FBLogin时,你将获得访问令牌。 一旦你得到令牌,你不应该再次login(否则你会被提示已经授权这个应用程序,因为你的应用程序已经被授予了一个访问令牌提前没有过期)。 您应该重新使用未过期的访问令牌。
喜欢这个 :
if FBSDKAccessToken.currentAccessToken() != nil { print(FBSDKAccessToken.currentAccessToken().userID) print(currentAccessToken().tokenString) //OR call the *FBGraphRequest* }
注意:对于应用内浏览器login(SVC:Safari View Controller)
查看更多: https : //developers.facebook.com/blog/post/2015/10/29/Facebook-Login-iOS9/和https://developers.facebook.com/docs/reference/ios/4.9/class/ FBSDKLoginManager /
您需要确保您的应用在您的“生成设置”中具有正确的URL前缀。 还要确保URL前缀与Facebook开发人员应用中的Facebook ID / URL前缀相匹配。
编辑:您的问题可能是access_token过期,所以它不得不重新要求权限。
如果您的应用程序没有请求offline_access权限,则会发生这种情况。 在较新的SDK中,offline_access已被弃用,现在您必须扩展access_token。
看到这个链接: https : //developers.facebook.com/docs/mobile/ios/build/#extend_token
在使用FBSDKLoginManager
login之前,您应该检查是否有当前会话。 [loginManager logout]
前请勿使用[loginManager logout]
。
if ([FBSDKAccessToken currentAccessToken]) { NSLog(@"Token is available : %@",[[FBSDKAccessToken currentAccessToken]tokenString]); // Now get details using graphpath. } else { // login with permissions using FBSDKLoginManager and get details using graphpath in completion }
在facebook.com有一个开放的错误
https://developers.facebook.com/bugs/190389531089978
但错误只出现在Android,ios工作正常。
(顺便说一句,在foursquare和spotify android应用程序相同的行为 – 检查出来)
运行你的iOS FB应用程序到设备而不是模拟器,它工作正常,并没有显示已经授权的屏幕。 谢谢。
由于这个问题已经得到解答,但是我想为Swift 3.0
添加另一个有用的答案:
当在Swift中使用FB Login时,我遇到了问题,而且我之前是这样做的:
let fbLoginManager : FBSDKLoginManager = FBSDKLoginManager() fbLoginManager.loginBehavior = .systemAccount
如此使用,系统帐户来检查用户是否有权login。 除非您通过不同的用户注销并login,否则应用程序会显示与“新login”相同的“已授权”消息。 所以我用这种方式,这个技巧做的工作:
let fbLoginManager : FBSDKLoginManager = FBSDKLoginManager() fbLoginManager.loginBehavior = .web.
这显示login后login屏幕。 希望这有助于解决这个问题。
随意评论。 谢谢。