zer*_*kms 8 php facebook facebook-graph-api
根据文档,端点看起来像
GET /debug_token?
input_token={input-token}&
access_token={access-token}
Run Code Online (Sandbox Code Playgroud)
哪里
input_token:您希望获取以下信息的
access_token访问令牌:您的应用访问令牌或来自应用开发者的有效用户访问令牌
假设我没有"来自应用程序开发人员的有效用户访问令牌" - 只是因为我不想每2个月刷新一次并始终记住它 - 我将如何使用"app access token"执行它"?
该getApplicationAccessToken()方法受到保护,因此无法在不将其覆盖为公共的情况下访问它.
我缺少任何优雅的解决方案?
PS:由于缺少访问令牌而导致"您必须提供应用程序访问令牌或作为应用程序所有者或开发者的用户访问令牌"错误的调用示例:
$tokenDebug = $fb->api('debug_token', array(
'input_token' => $token,
));
Run Code Online (Sandbox Code Playgroud)
PPS:"有趣"的事情是,上面的错误看起来不是每个人都有,$token但是对于某些人而言,我看不出任何明显的区别,即失败和成功的标记.
PPPS:$token是用户访问令牌
PPPPS:为FB PHP SDK创建功能请求https://developers.facebook.com/bugs/637897982899835
PPPPPS:可能更好的是创建一个拉取请求,但它是凌晨1:30,我太累了
CBr*_*roe 11
好的,所以如果需要一个app访问令牌app_id|app_secret(两个值都与中间的管道符号连接)总是有效.
该方法getApplicationAccessToken似乎在PHP SDK被保护起来,以3.2.2 -而getAppId并getAppSecret已经在该版本公开; 所以那些可能是硬编码id和秘密的替代方案.
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
Run Code Online (Sandbox Code Playgroud)