Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Facebook 我可以直接从服务器上的FB.login使用访问令牌吗?_Facebook_Security_Oauth - Fatal编程技术网

Facebook 我可以直接从服务器上的FB.login使用访问令牌吗?

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。因

我想实现一个不执行传统oauth重定向的Facebook身份验证。它不能很好地与我的单页应用程序和GraphQLAPI配合使用

在JS端,我可以调用
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来交换令牌,因此,如果代码以任何方式泄漏,任何其他人都无法使用它。

非常有用,谢谢