使用facebook访问令牌与offline_access和javascript

时间:2011-12-27 15:20:52

标签: javascript facebook facebook-graph-api facebook-javascript-sdk facebook-authentication

我有一个具有offline_access权限的应用程序,我通过php sdk获取访问令牌并将访问令牌存储在我的数据库中。

此应用程序通过与facebook交互的网站运行,但我们不要求用户在使用我们的网站时登录到Facebook。也就是说,要登录并使用我们的网站,不需要登录到Facebook。这就是我们使用offline_access权限的原因。

现在,问题是:如何在javascript中使用访问令牌?

显而易见的解决方案,即通过php echo在网页中插入访问令牌,将是不安全的,因为我们目前不通过https提供页面,因此令牌以纯文本形式传播。此外,如果某些用户无人看管他的计算机,攻击者可以使用它并通过查看网站来获取令牌。

是否有一种安全使用此访问令牌的简便方法?或者我错过了什么?

3 个答案:

答案 0 :(得分:0)

使用JavaScript安全地使用访问令牌的唯一方法是对PHP脚本执行AJAX请求。你永远不会想让那个令牌在浏览器中浮动。

答案 1 :(得分:0)

您可以从该网页对php脚本(将使用脱机令牌)进行AJAX调用。

答案 2 :(得分:0)

如果您的问题是您不想通过GET从服务器调用Facebook api,则可以使用POST。 我的意思是:你的服务器上的页面必须调用Facebook api,例如在用户页面上写评论,你应该这样做

https://graph.facebook.com/userID/feed?access_token=XXXXXXXXXXX 

但以这种方式,access_token显示在浏览器的URL栏上。要隐藏参数,您可以使用使用POST的隐藏表单,并使用javascript

自动提交
<form action="https://graph.facebook.com/userID/feed" name="formNAME" method="POST">               
 <input type="hidden" name="access_token" value="XXXX">     
 <input type="hidden" name="description" value="blablabla">   
</form>

<script type="text/javascript">     
 document.formNAME.submit();    
 return;   
</script>