Facebook令牌无效但可以访问api

时间:2014-12-15 02:16:31

标签: php facebook facebook-graph-api facebook-php-sdk facebook-access-token

我有来自facebook的令牌(来自图表浏览器工具)。我正在使用PHP sdk。我使用所述令牌创建了一个会话,并调用了FacebookSession :: validate()方法。它返回TRUE。我将它上传到测试服务器中,当我运行它时会说Session已过期。我调试了令牌,到期时间应该持续2个月。

当我尝试获取用户信息时(在测试服务器中)它也有效。甚至是会话信息。它只会引发一个"会话已经过期"我调用validate()方法时的异常。我有什么想法我做错了吗?请注意,这只发生在我将其上传到实时服务器上之后。我本地服务器和live上的代码是相同的。

以下是示例代码。已经通过调用setDefaultApplication()方法设置了appid和secret。

<?php

\Facebook\FacebookSession::setDefaultApplication('app-id','app-secret');
$s = new \Facebook\FacebookSession('my-access-token');
$u = null;
try {
    $fbr = new \Facebook\FacebookRequest($s, 'GET', '/1663246619?fields=id,first_name,last_name,gender,email,birthday,bio');
    $u = $fbr->execute();
    $i = $s->getSessionInfo();
    var_dump($i->getProperty('is_valid'));
    var_dump($s->validate());
} catch(\Exception $e) {
    var_dump($e->getMessage());
}

var_dump($u->getGraphObject()->asArray());

以下是回复

bool(true)

string(50) "Session has expired, or is not valid for this app."

array(11) {
  ["id"]=>
  string(10) "1663246619"
  ["email"]=>
  string(22) "my-email@email.com"
  ["first_name"]=>
  string(12) "Kapitanluffy"
  ["gender"]=>
  string(6) "female"
  ["last_name"]=>
  string(6) "Pirata"
  ["link"]=>
  string(34) "http://www.facebook.com/1663246619"
  ["locale"]=>
  string(5) "en_US"
  ["name"]=>
  string(19) "Kapitanluffy Pirata"
  ["timezone"]=>
  int(8)
  ["updated_time"]=>
  string(24) "2014-12-06T23:47:48+0000"
  ["verified"]=>
  bool(true)
}

其他说明:

  • 访问令牌适用于我的应用
  • 我使用的是facebook-php-sdk-v4版本4.0.3

1 个答案:

答案 0 :(得分:0)

您需要将SDK版本升级到最新的稳定版4.0.12。自4.0.3以来已经有很多bug fixes and security updates。一个这样的错误与您遇到问题的会话信息验证有关。这应该有希望解决你的问题。 :)