Почему мой фейсбук access_token короче, чем в примере, и в нем отсутствует «сессия»? - PullRequest
0 голосов
/ 06 марта 2012

Я разрабатываю приложение для Facebook и пытаюсь найти «местоположение» моих друзей. Использование инструмента Graph API Explorer: http://developers.facebook.com/tools/explorer/ совсем несложно.

Однако, когда я звоню, чтобы получить токен доступа от аутентифицированного пользователя Приложения, токен, который я получаю, короче, чем токен, сгенерированный из инструмента Graph API Explorer. Этот сокращенный токен позволяет мне получать основную информацию о друзьях, но не позволяет мне получать объект location . Похоже, что некоторые исследования показывают, что мне не хватает «сеансовой части» токена http://benbiddington.wordpress.com/2010/04/23/facebook-graph-api-getting-access-tokens/

Как я могу получить эту "часть сеанса?" Почему токен, который я получаю от Facebook, не совпадает с токеном, который я получаю от Graph Explorer API?

Примечание. Я убедился, что запрашиваю необходимые расширенные разрешения для чтения местоположения моих друзей.

1 Ответ

1 голос
/ 12 марта 2012

Убедитесь, что у вас есть пользователь access_token.Если вы используете PHP-SDK, то, скорее всего, вы используете приложение access_token.

SDK всегда получает приложение access_token и использует его, если нет пользователя access_token ( ссылка ):

/**
* 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;
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...