2

TL;DR 版本:

您能否在没有 Web 应用程序的回调 URL 的情况下通过 Facebook 进行身份验证,因为 Web 应用程序实际上并未在服务器上运行。

完整解释:

我正在构建一个连接电视平台应用程序,其中“应用程序”本身是一堆在本地运行的 HTML/JS/CSS(例如文件 -> 在您的桌面浏览器上打开),我想将 Facebook 集成到其中。

问题是 Facebook 的所有网络 OAuth 调用都要求您有一个回调 URL 以将用户重定向到以完成身份验证。这里有个问题——这个应用程序没有 URL——它是设备上本地运行的网页。

我知道这是带外身份验证的设计目的,但我似乎找不到任何有关如何在 Facebook OAuth 系统中使用此功能(或如何执行非回调 OAuth 流程)的文档。

4

3 回答 3

4

您正在描述桌面身份验证或您在没有服务器的情况下对 FB 进行身份验证的任何情况。您传递给 OAuth 对话框的重定向 URL 是https://www.facebook.com/connect/login_success.html当浏览器重定向时,您可以获得访问令牌。您可以在 FB 文档中阅读所有相关信息,位于桌面应用程序部分的底部 (https://developers.facebook.com/docs/authentication/)

只需重新阅读您的问题,由于应用程序在浏览器中运行,您将需要打开另一个窗口进行身份验证并从中获取访问令牌。

于 2011-09-30T03:21:30.560 回答
0

如果您正在使用 HTML/Javascript,请使用他们的 Javascript SDK。您可以简单地使用FB.login并从回调中获取访问令牌来登录该人。

于 2011-09-29T18:48:17.993 回答
0

我真的不认为这是直接可能的。除非有一些完全没有记录的东西,否则 Facebook 没有机制来发送身份验证数据,除非加载一个 url。我敢肯定,这至少部分是作为一种安全措施,起到一种将发送身份验证数据的“白名单”的作用。

我能想到的解决此问题的唯一方法可能是在服务器上设置一个 URL,该 URL 可以响应重定向并存储身份验证数据,并让您的客户端代码轮询该服务器以获取它。实际上是一种代理身份验证服务。您可能必须打开第二个浏览器窗口,其中包含 Facebook 身份验证屏幕,但理论上它可以工作。

于 2011-09-29T21:27:53.830 回答