【问题标题】:Using the facebook access token with offline_access and javascript将 facebook 访问令牌与 offline_access 和 javascript 一起使用
【发布时间】:2011-12-27 15:20:51
【问题描述】:
我有一个具有offline_access权限的应用程序,我通过php sdk获取访问令牌并将访问令牌存储在我的数据库中。
此应用程序通过与 facebook 交互的网站运行,但我们不要求用户在使用我们的网站时登录到 facebook。也就是说,登录和使用我们的网站不需要登录 facebook。这就是我们使用offline_access权限的原因。
现在,问题是:如何在 javascript 中使用访问令牌?
显而易见的解决方案是通过 php echo 在网页中插入访问令牌,这是不安全的,因为我们目前不通过 https 提供页面,因此令牌以纯文本形式传播。此外,如果某些用户的计算机无人看管,攻击者可以通过查看站点源来使用它并获取令牌。
是否有一种简单的方法可以安全地使用此访问令牌?还是我错过了什么?
【问题讨论】:
标签:
javascript
facebook
facebook-graph-api
facebook-javascript-sdk
facebook-authentication
【解决方案1】:
在 JavaScript 中安全使用访问令牌的唯一方法是对 PHP 脚本执行 AJAX 请求。您永远不会希望该令牌在浏览器领域中四处飘荡。
【解决方案2】:
您可以从该网页对 php 脚本(将使用离线令牌)进行 AJAX 调用。
【解决方案3】:
如果您的问题是您不想使用 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>