2015年2月13日金曜日

PHPでのTwitterOAuth

PHPでのTwitterOAuthについて、ネットを見ていると変な記事ばかりなので、少しまとめます。(もしかしたら仕様が変わっただけかもしれません)


ここでは、Consumer Key(API Key), Consumer Secret, Access Token, Access Token Secretの取得方法については、省略します。

Twitterを使ったアプリケーションを作るときにさけて通れないのが、OAuth認証です。この部分について、PHP用にライブラリを作った方がいます。

それをGitHubにアップロードされているので、
GitHub - abraham/twitteroauth
こちらを利用させていただきます。右端のDownload-zipからダウンロードできます。

これがまるでTwitter APIそのものであるかのような説明がなされているブログが散見されますが、OAuth認証はTwitter以外でも使われている認証方法であり、OAuth認証の部分とTwitter APIとのあたりをabrahamさんがライブラリ化して、出来上がったのがこれです。

GitHubの中身をよく見ると、ドキュメントをここで公開されているので、概ねこの方法に従った方法を、簡単に説明します。

まずsample.phpと同じフォルダに、"autoload.php"および"src"フォルダを中身ごと、保存しておきます。
そして、"sample.php"の中身は
  <?php
//はるふ's innovation!
  require_once(dirname(__FILE__)."/autoload.php");
  use Abraham\TwitterOAuth\TwitterOAuth;

  $consumer_key = "";// Consumer keyの値
  $consumer_secret = "";// Consumer secretの値
  $access_token = "";// Access Tokenの値
  $access_token_secret = "";// Access Token Secretの値

  // OAuthオブジェクト生成
  $twiter = new TwitterOAuth($consumer_key,$consumer_secret,$access_token,$access_token_secret);

  $user = '_ha1f';

  $tweets = $twitter->get('statuses/user_timeline', array('screen_name' => $user));

  foreach ($tweets as $i => $tweet) {
    echo "$i: $tweet->text" . PHP_EOL;
  }
こうします。もちろん、4つのキーはすべて値を入れておいてください。(文字列として)

require_once(dirname(__FILE__)."/autoload.php");
で同じフォルダにある"autoload.php"をrequireしています。

これで僕のTLが表示されるかと思います。一部ファイルのみをコピーしてOAuth部分だけ利用する方法が紹介されているブログもありますが、おそらくこれが作者の意向にあった使い方かと思います。

ちなみにget関数に渡しているURLは、URLから前の部分
"https://api.twitter.com/1.1/"と、最後の".json"を省いたものです。
つまり、検索結果をgetしたいときには、
$timeline = $twitter->get('search/tweets', array('count' => '100', 'lang' => 'ja', 'q' => 'はるふ exclude:replies exclude:retweets'));
$tweets = $timeline->statuses;
とすればよいです。

0 件のコメント:

コメントを投稿