我正在开发一个基于Intranet的应用程序,我所工作的公司将会出售该应用程序,它可以作为后台流程的一部分发布到Facebook墙上。
要进行授权,我需要完成流程(即https://graph.facebook.com/oauth/authorize
参数client_id=1234567890
和redirect_uri=http://customer-intranet.example.com
) - 这是第二个阻碍我的,因为我无法预测redirect_uri
,Facebook似乎对应用程序中预先指定的整个内容严格要求。
我想我需要设置一个托管网站,从Facebook接收访问令牌,然后以某种方式将该令牌重定向回客户的内部网站,在那里可以使用它。 (然后是整个离线访问令牌弃用的事情......)
我为自己制造的东西太难了吗?有一个更好的方法吗?我查看了其他身份验证流程,其中,设备可能工作,但它显然处于封闭测试阶段。
答案 0 :(得分:4)
您可以考虑使用Client Side authentication流程或JS-SDK使用OAuth Dialog,这样您就可以轻松避免指定redirect_uri
,因为它可能由JS-SDK自动提供(或您可以使用当前URL window.location
,如客户端身份验证流程的文档中所示。
备注:强>
虽然这可以帮助您避免使用redirect_uri
实际问题更深一点......
redirect_uri
的使用会使这种流程难以实施,不仅因为无法预测,而且由于要求redirect_uri
应位于 App Domain 中,同样适用于JS-SDK。
因此,一般情况下,您需要在应用程序设置中放置redirect_uri
/ URL应用程序运行的域名,这在许多客户端/域名中都是令人讨厌的。
您可以通过使用单独的(可公开访问的)主机来实现身份验证流程,但在执行此操作之前,最好先问自己几个问题:
总结一下:
您可以为每个客户端创建单独的应用程序,或指示客户端将应用程序设置为应用程序的安装/设置过程的一部分。稍后您可以使用客户端身份验证流程来创建适用于每个客户端的通用代码(这也适用于服务器端流程,但需要一些额外的工作,并且使用JS-SDK FB.login
它可能是一个丢弃 - 在功能上没有任何额外的工作)。