如何将访问令牌从php实现的js脚本传递到localStorage扩展

时间:2016-11-02 11:02:27

标签: javascript php facebook facebook-javascript-sdk facebook-php-sdk

我正在制作一个使用Facebook php和js SDK的浏览器扩展程序。

我需要获取用户访问令牌,但我不能在本地使用js SDK(因为facebook不提供直接从扩展连接)所以我必须将js sdk实现到我服务器上的php(我不能在这里使用php sdk,因为它不允许通过cookie自动登录,但我需要这个。)

那么有一种安全的方法可以将访问令牌从我的php中的js脚本部分传输到我的localStorage吗?我可以想象使用像parent.postMessage(token,chrome:// chrome_extension_id)之类的东西,这样安全吗?或者有没有直接的方法来保护扩展的localStorage的东西?

另一种方法是使用Facebook PHP sdk JavaScriptHelper developers.facebook.com

我已经尝试过这段代码:

$fb = new Facebook\Facebook([/*...*/]);
$jsHelper = $fb->getJavaScriptHelper();
$access_token = $jsHelper->getAccessToken();
$_SESSION['fb_user_token'] = (string) $access_token;

/*...*/

$response = $fb->get("/?id=$url&fields=share{comment_count}", $_SESSION['_fb_user_token']);

但它不起作用,因为对象最后传递给get方法而不是字符串。所以我认为从令牌对象中获取字符串时出错了。

1 个答案:

答案 0 :(得分:0)

好的,我在原帖中使用了第二个选项(使用JavaScriptHelper函数)得到了一个解决方案。

$access_token->getValue();

这就是我必须使用访问令牌对象来获取访问令牌字符串。

顺便说一句,这对于获取访问令牌对象的可用方法非常有用:

array get_class_methods ( mixed $class_name )