Согласно документации, конечная точка выглядит
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