9

根据文档,端点看起来像

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,我太累了

4

2 回答 2

15

好的,所以如果需要一个应用程序访问令牌,app_id|app_secret(两个值都与中间的管道符号连接)总是有效的。

该方法getApplicationAccessToken似乎在 PHP SDK 3.2.2 之前受到保护——而getAppIdgetAppSecret该版本中已经公开;所以这些可能是硬编码 id 和 secret 的替代方案。

于 2013-10-14T12:20:08.047 回答
6

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
于 2017-01-04T13:52:54.180 回答