Ale*_*mar 6 php curl twitter-oauth
我使用以下代码来获取持票人令牌:
$token = base64_encode($client_id.':'.$client_sec);
$data = array ('grant_type' => 'client_credentials');
$data = http_build_query($data);
$header = array(
'Authorization: Basic '.$token,
'Content-type: application/x-www-form-urlencoded;charset=UTF-8',
'Content-Length: ' . strlen($data)
);
$options = array(
CURLOPT_HTTPHEADER => $header,
CURLOPT_HEADER => false,
CURLOPT_URL => 'https://api.twitter.com/oauth2/token',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POSTFIELDS => $data
);
$ch = curl_init();
curl_setopt_array($ch, $options);
$result = curl_exec($ch);
curl_close($ch);
print_r($result);
exit;
Run Code Online (Sandbox Code Playgroud)
但是一直输出:
{"errors":[{"label":"authenticity_token_error","code":99,"message":"Unable to verify your credentials"}]}
我做错了什么?
Phi*_*ley 16
在与这个问题斗争了一段时间后我发现问题是我正在使用Advanced Rest Client从我已经登录到Twitter的浏览器中调用/ oauth2/token.退出Twitter并再次进行API调用后,它运行正常.
简短回答:确保在尝试请求承载令牌时,您还没有登录到Twitter的活动会话.
我挣扎了一段时间,我找到的答案似乎都没有帮助.错误的文档也是一个模糊的"出错了".
我的问题是我使用的是我找到的代码mashup,并且标头未正确使用:
$headers = array(
'Authorization' => 'Basic ' . base64_encode($appid . ':' . $secret), // WRONG!!!
'Authorization: Basic ' . base64_encode($appid . ':' . $secret), // Correct!
'Content-Type: application/x-www-form-urlencoded;charset=UTF-8', // Correct!
);
Run Code Online (Sandbox Code Playgroud)
对我来说,问题是Authorization标头使用的是键值格式,而内容类型标头则不是.这打破了授权标题.
以下是要检查的其他一些与错误99相关的事情:
当您最终获得访问令牌时,请确保将其缓存以避免速率限制.我相信你每15分钟就会收到450个请求.如果您不缓存它,其中一半将用于获取访问令牌!
| 归档时间: |
|
| 查看次数: |
4173 次 |
| 最近记录: |