2013-10-14 2 views
6

Согласно documentation конечная точка выглядит какКак бы вы выполняли вызов `debug_token`, используя facebook php sdk?

GET /debug_token? 
    input_token={input-token}& 
    access_token={access-token} 

где

input_token: токена доступа Вы хотите получить информацию о
access_token: ваш доступ приложение маркер или действительный маркер доступа пользователя, исходя из разработчик приложения

Предполагая, что у меня нет «действительного доступа пользователя» en от разработчика приложения »- только потому, что я не хочу обновлять его каждые 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 : 30am, и я слишком устал от этого

+0

Зачем вам нужно отлаживать ваш токен доступа _application_ в первую очередь ...? – CBroe

+0

@CBroe: Я хочу отладить токен доступа пользователя '$ token' – zerkms

+1

Комбинация' app_id | app_secret' (оба значения, объединенные символом канала в середине) всегда работают как токен доступа к приложениям). – CBroe

ответ

10

OK, поэтому, если нужен токен доступа к приложению, app_id|app_secret (оба значения, объединенные символом трубы посередине) всегда работают.

Метод getApplicationAccessToken, по-видимому, был защищен в SDK PHP до 3.2.2, тогда как getAppId и getAppSecret уже являются общедоступными в этой версии; поэтому они могут быть альтернативой жесткому кодированию идентификатора и секретности.

+1

Не совсем всегда. Когда приложение является Desktop/Native, оно не работает. input_token и access_token в этом случае одинаковы. – OCTAGRAM

5

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 
+0

теперь он действительно :-) – zerkms

Смежные вопросы