Twitter のアプリ専用認証を使用して、検索結果を取得しようとしています。ほとんどの部分で Codeigniter を使用していますが、問題のコードは単純な PHP です。
ローカルホストで実行すると検索結果が返されますが、サーバーで実行すると次のエラーが表示されます。
[コード] => 99 [ラベル] => Authenticity_token_error [メッセージ] => 資格情報を確認できません
そのため、ベアラー トークンを取得する最初のリクエストで失敗しています。
これは私には少し厄介なようで、明らかにデバッグが困難です。私はおそらく非常に基本的な何かを見逃しているので、どんな助けも感謝して受け入れられます!
以下は私のコードです:
// get consumer key and consumer secret from my config files
$consumer = array(
'key' => $this->config->item($provider.'_key'),
'secret' => $this->config->item($provider.'_secret'),
);
// encode it into the format Twitter expects
$bearerTokenCred = base64_encode($consumer['key'].":".$consumer['secret']);
// set up request
$opts = array('http' =>
array(
'method' => 'POST',
'header' => 'Authorization: Basic '.$bearerTokenCred."\r\n".
"Content-type: application/x-www-form-urlencoded;charset=UTF-8\r\n",
'content' => 'grant_type=client_credentials'
)
);
$context = stream_context_create($opts);
// send request
$result = file_get_contents('https://api.twitter.com/oauth2/token', false, $context);
$result2 = json_decode($result, true);
// this is where it prints my error - prior to doing anything else
print_r($result2);
if ($result2["token_type"] != "bearer"){
echo $result2["token_type"];
return;
}
$opts = array('http' =>
array(
'method' => 'GET',
'header' => 'Authorization: Bearer '.$result2["access_token"]
)
);
$context = stream_context_create($opts);
$result3 = file_get_contents('https://api.twitter.com/1.1/search/tweets.json?q='.urlencode($search), false, $context);