我们有一个使用本机 Facebook 登录的 ios 应用程序。
然后我们还有一个网站(应用程序基本上是它的优化客户端),人们也可以通过 Facebook 登录。当他们在移动 safari 中打开我们的网站时,他们会被定向到 Facebook 页面以在那里进行身份验证并且它可以工作,但是......它仍然远离原生,用户必须重新输入他们在 ios 中经常拥有的凭据。
那么是否有可能以某种方式仅针对网页启动系统 fb 身份验证(也许使用一些巧妙的 URL 模式?)并获得授予网络的令牌?
我们有一个使用本机 Facebook 登录的 ios 应用程序。
然后我们还有一个网站(应用程序基本上是它的优化客户端),人们也可以通过 Facebook 登录。当他们在移动 safari 中打开我们的网站时,他们会被定向到 Facebook 页面以在那里进行身份验证并且它可以工作,但是......它仍然远离原生,用户必须重新输入他们在 ios 中经常拥有的凭据。
那么是否有可能以某种方式仅针对网页启动系统 fb 身份验证(也许使用一些巧妙的 URL 模式?)并获得授予网络的令牌?
困难的方式 如此处所述http://aaronparecki.com/articles/2012/07/29/1/oauth2-simplified#mobile-apps您可以找到URL方案来触发本机iOS应用程序进行应用程序授权:
fbauth://authorize?redirect_uri=[redirect_uri]&client_id=[client_id]&response_type=token
但是,如果您调用该链接,则不可能进行重定向。您可以尝试破解该重定向,但也许您找不到出路。
解决该问题的一种安全方法是在用户登录时使用 SSO 令牌对您的应用程序上的用户进行身份验证,然后在 Safari 上进行重定向,并使用指向您的 APP 的自定义 url,通过存储的令牌作为 FB 应用程序的桥梁在您的应用程序中。FB 身份验证后,您可以直接将用户重定向回您在 Safari 中的登录页面。正如@Lego 所说,这是一种直接验证的替代方法,可以通过深入到 FB 使用的自定义 URL 来进行。
要打开 Facebook 应用程序,您可以使用自定义 URL 方案。但我不确定你是否可以从中验证用户身份。如果你也可以,那么它将仅限于已在该设备应用程序上配置的 fb 帐户。所以最好尝试使用 Facebook api 或其他东西
不,目前还不能通过本机 Facebook 应用程序直接对用户进行身份验证,但可以使用自定义 URL 方案对用户进行身份验证,该方案打开您的本机 iOS 应用程序,然后处理身份验证流程:
用户使用您的 iOS 应用程序进行本机身份验证。然后,您将用户登录名(不是密码)存储在您的应用程序中(即使用NSUserDefaults
)。
然后用户在 Mobile Safari 中打开您的网页。您通过自定义 url 方案将用户重定向到您的应用程序(即使用 myapp://authenticate)。关于实现自定义 URL 方案的 Apple 文档:单击
现在,如果您的 iOS 应用程序中有一个活动的 FB 会话,您可以直接将用户重定向回 Mobile Safari 中的登录页面,通过 url get 参数传递访问令牌,或者您首先重新验证用户身份,显示登录信息使用您之前存储在 iOS 应用程序中的用户名进行查看(步骤 1),然后将用户重定向到您的登录页面,这一切都取决于会话状态和您的安全需求。
我没有完全得到您的问题,但我认为根据您的问题,您想在 safari 或自定义 Web 视图中创建 fb 应用登录。
这是完美的吗?
据我所知,网络视图是不同的东西,而原生应用程序是不同的东西。
如果您在 Web 视图中登录,则无需检查任何令牌或其他东西,因为它会给您 Logout 的东西。
但如果您在您的应用程序中登录,那么“developer.facebook.com”肯定会对您有所帮助。
是的,你会在你的应用程序中做大部分事情,就像原生 facebook 应用程序一样。
希望它有帮助....