我正在制作一个使用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方法而不是字符串。所以我认为从令牌对象中获取字符串时出错了。
答案 0 :(得分:0)
好的,我在原帖中使用了第二个选项(使用JavaScriptHelper函数)得到了一个解决方案。
$access_token->getValue();
这就是我必须使用访问令牌对象来获取访问令牌字符串。
顺便说一句,这对于获取访问令牌对象的可用方法非常有用:
array get_class_methods ( mixed $class_name )