我希望我的iOS和Android应用程序通过原生Facebook应用程序而不是Web视图提供Facebook登录。从字面上看,我发现的所有文档似乎都在谈论仅客户端身份验证,即客户端与Facebook进行通信,然后从交易中收到access_token
。
我需要能够使用我的服务器对用户进行身份验证。这意味着我需要中间的服务器,从Facebook接收重定向,然后验证用户。
如果我想使用网页视图,这非常简单。但是,我可以找到零文档,详细说明如何使用Facebook本机应用程序执行此操作。有没有?或者我错过了一些愚蠢/简单的事情?
答案 0 :(得分:0)
我花了一些时间研究Facebook SDK在iOS上如何做到这一点同时构建Stormpath的iOS SDK(我们重新实现Facebook的登录流程以避免需要另外的依赖),我相信我知道为什么Facebook和Google正在转向使用Web视图而不是他们的原生应用程序。
在iOS 9中,SFSafariWebView
已发布,这非常棒,因为与WKWebView
或UIWebView
不同,SFSafariWebView
可以访问您所有用户的Cookie。这意味着当在Web视图中打开Facebook登录屏幕的链接时,您的用户已经登录。
因为它们永远不会被引导出您的应用程序,所以使用Web视图实际上比使用Facebook应用程序对用户进行身份验证更快,更好的用户体验。
但是,由于Facebook iOS SDK是开源的,您可以查看FBSDKLoginManager.m中的performNativeLogInWithParameters:handler:
以了解它们如何实现它,并修改内部因素以强制本机应用登录。