Twitter フィードに oAuth2 ベアラー アクセス トークン メソッドを実装する必要があります。Twitter開発者のWebサイトの詳細を正しくフォローしましたが、「Twitterの資格情報を確認できません」というメッセージが表示され続けます...
資格情報を開発サーバー (5.3.10 マシン) にコピーすると、実際にログインしてトークンを取得し、ツイートを取得できますが、別のクライアントのサーバー (5.2.17 マシン) では、まったく同じコード。
以下のコードで、PHP の違いについて何か思い当たることはありますか? file_get_content httpsストリームラッパーオプションと関係があるに違いないと思いますが、それについてのドキュメントには何も見つかりません。(Openssl サポートはクライアント サーバーにインストールされます)
$twitter_bearer_access_token = get_option('twitter_bearer_access_token', null);
if($twitter_bearer_access_token == null)
{
//Request a bearer access token
$encodedAccessToken = base64_encode(TWITTER_CONSUMER_KEY.':'.TWITTER_CONSUMER_SECRET);
//Setup the stream context options and create the stream to POST to twitter
$options = array(
'http' => array(
'method' => 'POST',
'header' => 'Authorization: Basic '.$encodedAccessToken,
'content' => 'grant_type=client_credentials',
),
);
$context = stream_context_create($options);
$result = json_decode(@file_get_contents('https://api.twitter.com/oauth2/token', false, $context));
if(isset($result->token_type) && $result->token_type == 'bearer')
{
$twitter_bearer_access_token = $result->access_token;
update_option('twitter_bearer_access_token', $twitter_bearer_access_token);
}
else
{
$twitter_bearer_access_token = false;
}
}
編集#1
すべての変数が両方のサーバーで同じであることを事前に確認し、それらを出力して比較しました。file_get_contents だけが異なる結果を返します。
また、5.3 サーバーで取得したベアラー アクセス トークンを 5.2 サーバーにコピーしようとしましたが、値は一致しますが、無効な認証に関するエラーが発生し続けます...
編集#2
詳細については、送信するヘッダーとは関係がないようです。プロキシヘッダーなど、私に関係のないものを除いて、実質的にすべてのヘッダーを追加しました。PHP が 5.2 または 5.3 であることとは関係ありません。ステージング サーバー ホストでテストされ、5.2 に切り替えても動作します...