根据documentation端点看起来像
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而且我太累了
答案 0 :(得分:10)
好的,所以如果需要app访问令牌,app_id|app_secret
(两个值都与中间的管道符号连接在一起)总是有效。
方法getApplicationAccessToken
似乎在PHP SDK中受到保护,直到3.2.2 - 而getAppId
和getAppSecret
在该版本中已经公开;所以那些可能是硬编码id和秘密的替代方案。
答案 1 :(得分: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