Facebook 我可以直接从服务器上的FB.login使用访问令牌吗?
我想实现一个不执行传统oauth重定向的Facebook身份验证。它不能很好地与我的单页应用程序和GraphQLAPI配合使用 在JS端,我可以调用Facebook 我可以直接从服务器上的FB.login使用访问令牌吗?,facebook,security,oauth,Facebook,Security,Oauth,我想实现一个不执行传统oauth重定向的Facebook身份验证。它不能很好地与我的单页应用程序和GraphQLAPI配合使用 在JS端,我可以调用FB.login来触发一个对话框供用户登录。如果成功,我将收到一个包含accessToken和signedRequest的对象 signedRequest可以在服务器上解码,它会为我吐出一个code。我可以使用code和/oauth/access\u令牌来获取accessToken 然而,我已经在FB.login响应中获得了accessToken。因
FB.login
来触发一个对话框供用户登录。如果成功,我将收到一个包含accessToken
和signedRequest
的对象
signedRequest
可以在服务器上解码,它会为我吐出一个code
。我可以使用code
和/oauth/access\u令牌
来获取accessToken
然而,我已经在FB.login
响应中获得了accessToken
。因此,我的问题是:如果我一直都有访问令牌,那么我解码签名请求有什么意义吗?
好处:为什么FBAPI首先提供签名请求,为什么oauth在默认情况下重定向
code
而不是accessToken
?是的,您可以直接在服务器上使用从客户端登录获得的令牌
然而,它可能是短期的,而服务器端登录流应该立即为您提供长期的。如果您只需要在用户在页面上处于活动状态时执行API调用,那么短期的API调用可能就可以了。(而且它仍然可以通过服务器端API调用替换为长寿命的API,)
为什么FBAPI首先提供签名请求
它还包含更多的信息,可能对客户端应用程序有用(用户id、令牌到期、旧的“画布”类型应用程序的外部传入数据),并且可能会保存一个额外的API调用以获取此类信息
为什么oauth会在默认情况下重定向代码而不是accessToken
一般安全措施。直接包含在返回URL中的令牌很容易被嵌入该页面的第三方脚本窃取(广告服务器等也可能不时遭到黑客攻击),或者作为HTTP引用的一部分泄漏。code
参数要求API调用使用你的app secret来交换令牌,因此,如果代码以任何方式泄漏,任何其他人都无法使用它。非常有用,谢谢