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

Posted

技术标签:

【中文标题】PFLoginViewController didLogin 在使用 Facebook 登录时从未调用过【英文标题】:PFLoginViewController didLogin never called when logging in with Facebook 【发布时间】:2014-10-30 18:55:28 【问题描述】:

我遇到了与here 讨论过的相同问题。最终找到的解决方案是破坏 plist 文件中的 URL 方案,以便在登录 Facebook 时,您永远不会离开应用程序去 Safari,而是通过应用程序内的 Web 视图登录。但是,这似乎相当不方便,因为它不像 Safari 那样保存用户凭据。

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

【问题讨论】:

我仍然从我发布的原始线程中遇到这个问题。我将在接下来的几天内重新审视它。我将更深入地研究这个问题。我一定会告诉你我发现了什么! 如果我也想出什么办法,我会告诉你的,但目前我要休息一下。祝你好运! 那么你的问题是什么? 我已更新我的帖子以包含一个实际问题。 我现在正在处理这个问题,我了解到的唯一一件我之前没有注意到的事情是:如果你去设置 > 隐私 > Facebook > 应用程序应该会出现在这里,如果它是请求访问 Facebook。我的应用没有显示在此屏幕上,因此它没有请求访问权限。 【参考方案1】:

这很糟糕,但实际上很容易解决。我回顾了我的步骤,并意识到我不小心删除了我的回调方法。他们在这里:

// 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];

【讨论】:

我已经实现了两种方法,但方式不同。不过,使用您发布的前 3 个回调可以解决问题。谢谢!

以上是关于PFLoginViewController didLogin 在使用 Facebook 登录时从未调用过的主要内容,如果未能解决你的问题,请参考以下文章

PFLogInViewController 错误-使用 Parse 注销后无法登录 Facebook

“使用未声明的标识符‘PFLoginViewController’?--解析导入

无法修改 PFLogInViewController logInButton 标题

解析 iOS SDK PFLoginViewController Facebook Segue

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

重新加载 iOS 视图控制器