Ios 在应用程序被删除后保持Facebook访问权限

Ios 在应用程序被删除后保持Facebook访问权限,ios,iphone,swift,facebook,facebook-access-token,Ios,Iphone,Swift,Facebook,Facebook Access Token,我正在Swift中开发一个iOS9应用程序,并使用最新的Facebook SDK登录。我已经按照文档进行了操作,除了重新启动时无法保留facebook访问令牌外,登录工作正常。具体来说,当我在模拟器和实际设备上关闭应用程序,然后重新启动应用程序时,我必须在同一设备上再次登录Facebook,尽管我以前已经登录过。当我继续登录时,它会链接到facebook,并显示一条消息:“你已经授权了应用程序的名称” 根据Facebook SDK文档,一旦登录,应用程序应该缓存FBSDKAccessToken,

我正在Swift中开发一个iOS9应用程序,并使用最新的Facebook SDK登录。我已经按照文档进行了操作,除了重新启动时无法保留facebook访问令牌外,登录工作正常。具体来说,当我在模拟器和实际设备上关闭应用程序,然后重新启动应用程序时,我必须在同一设备上再次登录Facebook,尽管我以前已经登录过。当我继续登录时,它会链接到facebook,并显示一条消息:“你已经授权了应用程序的名称”

根据Facebook SDK文档,一旦登录,应用程序应该缓存FBSDKAccessToken,并且当用户退出并重新启动应用程序时,它不应该立即过期

我的AppDelegate中有以下代码。Swift:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        return FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)
    }
我在viewDidLoad()中执行以下检查:

有人知道为什么重新启动应用程序会使AccessToken为零吗


编辑:

当我点击我的Facebook登录按钮时,我也会遇到这个错误。我不确定这是否是上述问题的原因:

canOpenURL: failed for URL: "fbauth://authorize/?client_id=1068860826518986&default_audience=friends&display=touch&e2e=%7B%22init%22%3A1460515013815%7D&legacy_override=v2.4&redirect_uri=fbconnect%3A%2F%2Fsuccess&
        response_type=token%2Csigned_request&return_scopes=true&scope=public_profile%2Cema
        il%2Cuser_friends&sdk=ios&sdk_version=4.4.0&state=%7B%22challenge%22%3A%22YXJWy0wjHG2r4lnyAe%5C%2FMjqM3xy4%3D%22%2C%220_auth_logger_id%22%3A%22591AC45B-AB19-49AE-A994-
        851223E03265%22%2C%22com.facebook.sdk_client_state%22%3Atrue%2C%223_method%22%3A0%7D" 

    - error: "This app is not allowed to query for scheme fbauth"

它的删除是用户默认保存的。因此,当您重新启动应用程序时,您必须再次登录。

请确保您没有任何代码在应用程序终止方法上使FBSDKLoginManager注销(),如下所示

func applicationWillTerminate(application: UIApplication) {
    let loginManager: FBSDKLoginManager = FBSDKLoginManager()
    loginManager.logOut()
} 

如果存在这样的代码,那么在设备重新启动时,您的访问令牌将不再有效。

检查
Info.plist
是否将
nsAllowsArbirryLoads
设置为
YES
@bitsoferflow YES,我也这样做了。还是一样的结果。
func applicationWillTerminate(application: UIApplication) {
    let loginManager: FBSDKLoginManager = FBSDKLoginManager()
    loginManager.logOut()
}