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

在使用FBSDKLoginManagerlogin之前,您应该检查是否有当前会话。 [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屏幕。 希望这有助于解决这个问题。

随意评论。 谢谢。