使用Facebook进行带外OAuth身份验证

时间:2011-09-29 18:29:00

标签: facebook oauth out-of-band facebook-login

TL; DR版本:

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

完整的解释:

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

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

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

3 个答案:

答案 0 :(得分:4)

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

一样。

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

答案 1 :(得分:0)

如果您正在使用HTML / Javascript,请使用他们的Javascript SDK。您只需使用FB.login并从回调中获取访问令牌即可记录此人。

答案 2 :(得分:0)

我真的不认为这是直接可能的。除非有完全没有记录的内容,否则Facebook没有机制来发送身份验证数据,除非加载网址。我确信它至少部分意味着作为一种安全措施,作为一种“白名单”,可以发送auth数据。

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