是否可以从网页上调用iOS原生的Facebook登录对话框(而不是Web应用程序)?

11
我们有一个使用原生Facebook登录的iOS应用程序。

然后我们还有一个网站(该应用程序基本上是其优化客户端),人们也可以通过Facebook登录。当他们在移动Safari中打开我们的网站时,他们会被引导到Facebook页面进行身份验证,并且这样操作是可行的,但是...它仍然远非本地,并且用户通常必须重新输入他们已经在iOS中拥有的凭据。

那么是否有可能仅为一个Web页面启动系统fb身份验证(也许使用一些聪明的URL模式?)并将授予的令牌返回给Web?


您可以在服务器端使用通过移动应用程序获取的令牌(因此,如果他们已经通过您的移动应用程序登录,则无需再次登录)。 - Ming Li
你的网站需要进行什么需要身份验证的操作吗?它是否会发出图形 API 请求?如果是这样,它可以使用你从移动应用程序获取的相同访问令牌。 - Ming Li
1
@Artem,您找到解决方案了吗? - Luigi Saggese
不,Luigi和我现在都不认为有这样一个东西。它需要明确的iOS支持,我问这个问题是希望存在这样一个需求,但显然并没有。 - Artem
1
也许@Artem你需要调查一下iOS SDK来解码行为并替换它。 - Valerie Linc
显示剩余3条评论
4个回答

5

困难的方法这里所述,您可以找到URL方案来触发本机iOS应用程序进行应用程序授权:

fbauth://authorize?redirect_uri=[redirect_uri]&client_id=[client_id]&response_type=token

但是,如果你调用该链接,将不可能进行重定向。你可以尝试黑客攻击该重定向,但也许找不到出路。

解决这个问题的一种安全方法是在用户登录时使用SSO令牌来认证他在应用上的身份,并且在Safari上使用自定义URL重定向到你的应用,通过在你的应用中存储的Token作为FB应用程序的桥梁。在FB认证后,您可以直接将用户重定向回Safari中的登陆页面。正如@Lego所说,这是一种替代方案,可以通过深入了解FB使用的自定义URL进行直接验证。


1
那是一个有趣的想法,Nanako!当然,只适用于已安装我们自己的应用程序的人,但嘿,这是安装它的又一个理由 :)然后我想知道是否可能从网页的javascript中检查系统中是否存在myapp://处理程序... 可能无法检查,但也许我们可以触发两个Javascript请求:一个是myapp://,另一个是执行Web登录。 myapp://将会覆盖。 - Artem
2
无论我将redirect_uri设置为什么URL,似乎在Facebook应用程序中的UIWebView中都会得到一个白色页面。 - achow
你找到重定向的解决方案了吗? - Nanako Kyobashi
我有一个应用程序,在Web视图中加载我的网站。我该如何实现这一点? - johnny

0
不,目前还不可能通过原生Facebook应用程序直接验证用户身份,但可以使用自定义URL方案对用户进行身份验证,该方案将打开您的本机iOS应用程序,然后处理身份验证流程。
  1. 用户在您的iOS应用程序中进行本地身份验证。然后,您将用户登录信息(而不是密码)存储在您的应用程序中(即使用NSUserDefaults)。

  2. 然后,用户在移动Safari中打开您的网页。您通过自定义URL方案将用户重定向到您的应用程序(即使用myapp://authenticate)。有关实现自定义URL方案的Apple文档:click

  3. 现在,如果您的iOS应用程序中有一个活动的FB会话,您可以直接通过url get参数将访问令牌传递给用户,并将其重定向回移动Safari中的着陆页面,或者您首先重新对用户进行身份验证,显示填充了用户名的登录视图,这些用户名在之前已经存储在您的iOS应用程序中(步骤1),然后根据会话状态和安全需求再次将用户重定向到您的着陆页面。


问题是关于如何直接通过FB应用程序进行用户身份验证(Safari->FB应用程序-> Safari),而不是通过用户应用程序进行身份验证(Safari-> UserApp-> FB应用程序-> Safari)。也许这个答案并不是我们正在寻找的。 - Luigi Saggese
@LuigiSaggese 没错。我只是想提供一种替代方法,而不仅仅回答“不可能”。我已经更新了我的答案,以使自己清楚明白。 - borisdiakur
我已经添加了一个可能的解决方案,但我们必须深入研究以找到解决重定向问题的方法。 - Luigi Saggese
不错的问题。那是一个很好的替代方案。我想知道是否可以在Safari中使用相同的FB应用程序令牌。 - Segev
@Sha 是的,你可以。令牌是可移植的。FB文档:https://developers.facebook.com/docs/facebook-login/access-tokens/ - borisdiakur

0

要打开 Facebook 应用程序,您可以使用自定义 URL 方案。但我不确定是否可以从中验证用户。如果您也可以,则将限制为已在该设备应用上配置的 fb 帐户。因此最好尝试使用 Facebook API 或其他内容。


-1

我不太明白你的问题,但我认为根据你的问题,你想在Safari或自定义的Web视图中创建fb应用程序登录。

这样完美吗?

据我所知,Web视图和本机应用程序是不同的东西。

如果您在Web视图中登录,则无需检查任何令牌或其他内容,因为它会在那里提供注销功能。

但是,如果您在应用程序中登录,则“developer.facebook.com”肯定会帮助您。
是的,您将像本机Facebook应用程序一样在应用程序中完成大部分工作。

希望能有所帮助....


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接