twitter APIにアクセスするためのPHP製ライブラリとしては、codebird、twitteroauthなどありますが、大抵はcurl系の関数を使っています。
ただ、curl系の関数は必ず使えるわけではなく、コンパイルオプションを指定したり、PHP 5.5以降ではPECLからインストールしたりする必要があります。
一方、PHPには、組み込みでリクエストの送信を行える関数が存在します。file_get_contents()です(fopen()でもおそらく可)。php.iniで「allow_url_fopen = On」と設定されていれば、file_get_contents()の第三引数にコンテキストリソースを渡すことで、HTTPリクエストを行うことができます。
なお、OAuthに関しては、処理が複雑なので、今回はライブラリ(oauth-php)を利用します。
参考:OAuth.phpだけで twitter APIする
上記参考URLのスクリプトを参考に、(1) twitter APIのURLを最新版に修正 (2) リクエストのヘッダーにContent-Typeを追加 を行いました。
ただ、curl系の関数は必ず使えるわけではなく、コンパイルオプションを指定したり、PHP 5.5以降ではPECLからインストールしたりする必要があります。
一方、PHPには、組み込みでリクエストの送信を行える関数が存在します。file_get_contents()です(fopen()でもおそらく可)。php.iniで「allow_url_fopen = On」と設定されていれば、file_get_contents()の第三引数にコンテキストリソースを渡すことで、HTTPリクエストを行うことができます。
なお、OAuthに関しては、処理が複雑なので、今回はライブラリ(oauth-php)を利用します。
<?php require_once __DIR__ . '/OAuth.php'; // アプリケーションのコンシューマキー、アクセストークンを設定 $consumer_key = ''; $consumer_secret = ''; $access_token = ''; $access_secret = ''; // リクエストを行うURL $url = 'https://api.twitter.com/1.1/statuses/update.json'; // 投稿は POST $method = 'POST'; $tweet = 'ツイートテスト' . mt_rand(0, 100); // 同じツイートは繰り返せないので、後ろに乱数をくっつける(繰り返しのテストをやりやすくするため) $parameters = array('status' => $tweet); // OAuth関係の処理 $sha1_method = new OAuthSignatureMethod_HMAC_SHA1(); $consumer = new OAuthConsumer($consumer_key, $consumer_secret); $token = new OAuthConsumer($access_token, $access_secret); $request = OAuthRequest::from_consumer_and_token($consumer, $token, $method, $url, $parameters); $request->sign_request($sha1_method, $consumer, $token); $options = array( 'http'=>array( 'method' => $request->get_normalized_http_method(), 'header' => 'Content-Type: application/x-www-form-urlencoded', 'content' => $request->to_postdata() ) ); $context = stream_context_create($options); $result = file_get_contents($request->get_normalized_http_url(), false, $context); // ツイートを行う $result = json_decode($result); // twitterから返ってきたJSON文字列を配列に変換 var_dump($result);
参考:OAuth.phpだけで twitter APIする
上記参考URLのスクリプトを参考に、(1) twitter APIのURLを最新版に修正 (2) リクエストのヘッダーにContent-Typeを追加 を行いました。
コメント
このブログにコメントするにはログインが必要です。
さんログアウト
この記事には許可ユーザしかコメントができません。