PFLoginViewController didLogin在登录Facebook时从未调用过



我在这里也遇到了同样的问题。最终找到的解决方案是打破plist文件中的URL方案,这样在登录Facebook时,你就永远不会离开应用程序去Safari,而是通过应用程序中的web视图登录。然而,这似乎很不方便,因为它不像Safari那样保存用户凭据。

为什么PFLoginViewController didLogin在网络视图中加载facebook时被调用,而在safari中加载facebook后却没有被调用,我该如何解决这个问题。这不仅是因为它没有被调用,而且也没有创建用户,因为[PFUser-currentUser]在用safari加载facebook后返回nil。

这很糟糕,但实际上是一个简单的修复。我回溯了我的步骤,意识到我不小心删除了我的回调方法。它们在这里:

// Facebook oauth callback
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
    return [FBSession.activeSession handleOpenURL:url];
}
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
    return [FBAppCall handleOpenURL:url sourceApplication:sourceApplication withSession:[PFFacebookUtils session]];
}
- (void)applicationDidBecomeActive:(UIApplication *)application {
    [FBAppCall handleDidBecomeActiveWithSession:[PFFacebookUtils session]];
}

试试看,如果这能解决你的问题,请告诉我。我不能100%确定这是否是一种方法,因为我有一个旧的不推荐的例子要看

// Facebook oauth callback
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
    return [PFFacebookUtils handleOpenURL:url];
}
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
    return [PFFacebookUtils handleOpenURL:url];
}
- (void)applicationDidBecomeActive:(UIApplication *)application {
// Handle an interruption during the authorization flow, such as the user clicking the home button.
    [FBSession.activeSession handleDidBecomeActive];
}

最新更新