iOS Facebook SDK 登录视图有时会显示桌面 Web 而不是移动 Web

Posted

技术标签:

【中文标题】iOS Facebook SDK 登录视图有时会显示桌面 Web 而不是移动 Web【英文标题】:iOS Facebook SDK Login View sometimes shows Desktop Web rather than Mobile Web 【发布时间】:2014-11-14 16:54:04 【问题描述】:

我正在通过 Pods 使用最新的 FB SDK - 版本 3.18.2,带有 Xcode 5 和仅限 iPhone 的应用程序。我在 Storyboard 中使用 FBLoginView,因此点击它会弹出应用程序的 Facebook 登录,登录操作会调用该 FBLoginView 按钮的父视图控制器的委托。

一切正常——但是,有时会显示桌面版登录而不是移动版。这是间歇性的——我有一个从不显示的测试仪,一个有时会得到它,一个经常得到它。

知道如何防止 SDK 显示桌面登录吗?

【问题讨论】:

【参考方案1】:

如果用户没有安装 Facebook 本地应用程序,Facebook 网站将打开。 否则它将打开 Facebook 原生应用。

【讨论】:

问题是当 Facebook 应用不存在时,如何强制 SDK 始终加载移动版本 (m.facebook.com)。【参考方案2】:

Facebook SDK 中有一个名为 openWithBehavior 的函数可用于会话。使用如下所示:

FBSession *session = [[FBSession alloc] initWithPermissions:@[@"public_profile", @"email",@"user_location",@"user_birthday",@"user_likes"]];
[FBSession setActiveSession:session];


[session openWithBehavior:FBSessionLoginBehaviorForcingWebView
        completionHandler:^(FBSession *session,
                            FBSessionState status,
                            NSError *error) 



            if (FBSession.activeSession.isOpen) 

//Do Something


]

【讨论】:

我不想强制浏览网页——我希望 SDK 使用它现在使用的普通网页弹出窗口,以防用户没有激活 Facebook 应用或登录在设置中。 如果有账号,那么在同一个地方还有另一个功能可以登录。检查一下。

以上是关于iOS Facebook SDK 登录视图有时会显示桌面 Web 而不是移动 Web的主要内容,如果未能解决你的问题,请参考以下文章

Facebook SDK for iOS 处理登录

Facebook iOS SDK 登录原生和 UIWebView 登录

iOS 6 facebook sdk 3.1.1 登录错误

Facebook SDK 登录永远不会在 iOS 9 上回调我的应用程序

Facebook iOS SDK - 跳转到另一个视图

iOS facebook SDK:登录已通过身份验证