为什么我的Facebook access_token比示例短并且缺少'会话部分'?

时间:2012-03-06 03:07:51

标签: php facebook facebook-graph-api

我正在设计一个Facebook应用程序并试图获取我朋友的“位置”。使用Graph API资源管理器工具:http://developers.facebook.com/tools/explorer/这很简单。

但是,当我从经过身份验证的App用户调用获取访问令牌时,我收到的令牌比从Graph API资源管理器工具生成的令牌短。这个缩短的令牌允许我接收基本的朋友信息,但允许我检索位置对象。做一些研究似乎表明我错过了令牌http://benbiddington.wordpress.com/2010/04/23/facebook-graph-api-getting-access-tokens/

的'会话部分'

我如何能够检索这个'会话部分?'为什么我从Facebook收到的令牌与我从Graph Explorer API收到的令牌不同?

注意:我确保我要求必要的扩展权限来阅读我的朋友位置。

1 个答案:

答案 0 :(得分:1)

确保您拥有用户 access_token。如果您使用的是PHP-SDK,那么很可能您使用的是应用 access_token

SDK始终会获取应用access_token并在没有用户access_token时使用该应用reference):

/**
* Determines the access token that should be used for API calls.
* The first time this is called, $this->accessToken is set equal
* to either a valid user access token, or it's set to the application
* access token if a valid user access token wasn't available. Subsequent
* calls return whatever the first call returned.
*
* @return string The access token
*/
  public function getAccessToken() {
    if ($this->accessToken !== null) {
      // we've done this already and cached it. Just return.
      return $this->accessToken;
    }

    // first establish access token to be the application
    // access token, in case we navigate to the /oauth/access_token
    // endpoint, where SOME access token is required.
    $this->setAccessToken($this->getApplicationAccessToken());
    $user_access_token = $this->getUserAccessToken();
    if ($user_access_token) {
      $this->setAccessToken($user_access_token);
    }

    return $this->accessToken;
  }