Согласно документации, конечная точка выглядит
GET /debug_token? input_token={input-token}& access_token={access-token}
где
input_token:
токен доступа, который вы хотите получить информацию о
access_token
: токен доступа к вашему приложению или действительный токен доступа пользователя от разработчика приложения
Предполагая, что у меня нет «действительного токена доступа пользователя от разработчика приложения» – только потому, что я не хочу обновлять его каждые 2 месяца и всегда помню о том, как бы я его выполнил, используя «токен доступа к приложениям» «?
Метод getApplicationAccessToken()
защищен, поэтому нет доступа к нему, не переуступая его публике.
Любое элегантное решение, которое мне не хватает?
PS: пример вызова, который потерпит неудачу: «Вы должны предоставить токен доступа к доступу или токен доступа пользователя, который является владельцем или разработчиком приложения» из-за отсутствия токена доступа:
$tokenDebug = $fb->api('debug_token', array( 'input_token' => $token, ));
PPS: «интересная» вещь заключается в том, что ошибка сверху будет отображаться не для каждого $token
а для некоторых, и я не вижу никакого очевидного различия между токенами, которые терпят неудачу и что это удается.
PPPS: $token
– токен доступа пользователя
PPPPS: создан запрос функции для FB PHP SDK https://developers.facebook.com/bugs/637897982899835
PPPPPS: Возможно, лучше было бы создать запрос на перенос, но это 1:30 утра, и я слишком устал от этого
Хорошо, поэтому, если вам нужен токен доступа к приложению, всегда работает app_id|app_secret
(оба значения, объединенные с символом трубы в середине).
Метод getApplicationAccessToken
похоже, был защищен в PHP SDK до 3.2.2, тогда как getAppId
и getAppSecret
уже доступны в этой версии; поэтому они могут быть альтернативой жесткому кодированию идентификатора и секретности.
PHP SDK имеет метод getOAuth2Client()
, который возвращает экземпляр \Facebook\Authentication\OAuth2Client
.
У этого есть метод debugToken($accessToken)
, который возвращает экземпляр \Facebook\Authentication\AccessTokenMetadata
который содержит данные о токен доступа.
$appid = '123456789'; $appsecret = 'foobar'; $api = new Facebook(['app_id' => $appid, 'app_secret' => $appsecret]); $oauth = $api->getOAuth2Client(); $meta = $oauth->debugToken($accessToken); $meta->validateAppId($appid); // Will throw a FacebookSDKException if invalid $meta->getIsValid(); // boolean $meta->getExpiresAt(); // \DateTime|null