将Facebook身份验证从Javascript传递到PHP

时间:2011-07-24 18:54:00

标签: php javascript facebook-graph-api facebook

我正在尝试为我的Facebook App设置离线访问权限。 javascript部分已到位,完全由用户进行身份验证。但是我无法为我的生活似乎将身份验证数据从javascript发送到PHP。

基本上我从javascript getSession方法获取access_token,然后我用access_token=<URL_ENCODED_ACCESS_TOKEN>发出我的php请求,但是PHP SDK检测到访问令牌与应用程序访问令牌和鸡匹配。

我不知道为什么我的访问令牌是应用程序的那个,也许是因为我是开发人员?

对于它的价值,这就是Facebook SDK对我不利的路线:

$access_token = $this->getAccessToken();
if ($access_token &&
    $access_token != $this->getApplicationAccessToken() &&
    !($user && $persisted_access_token == $access_token)) {
  $user = $this->getUserFromAccessToken();
  if ($user) {
    $this->setPersistentData('user_id', $user);
  } else {
    $this->clearAllPersistentData();
  }
}

似乎无法突出显示一行,就是这一行:

$access_token != $this->getApplicationAccessToken() &&

有人可以向我解释如何将经过身份验证的用户从Javascript传递给PHP吗?

另外,我假设由于用户已授予离线访问权限,我可以存储此访问令牌供以后使用吗?

谢谢

2 个答案:

答案 0 :(得分:0)

尝试使用cookies,因为Javascript和php都允许你这样做,如果没有,那么AJAX是最好的方法,getAccessToken()函数基本上只有在用户连接时才获取用户的访问令牌,如果用户未连接,然后它获取您的应用程序访问令牌,echo getUser()并查看您获得的内容,如果您获得用户的ID,则用户连接到您的应用程序,如果您获得0,则用户未连接

答案 1 :(得分:0)

最终通过将访问令牌作为GET参数传递,然后使用接受手动提供访问令牌的API调用来解决。我无法找到自动处理此问题的方法。