読者です 読者をやめる 読者になる 読者になる

恥知らずのウェブエンジニア -web engineer, shameless

これは一歩を踏み出すことができない者たちのブログ

twitterとアプリ連携をして、ツイートとかする

twitterとアプリ連携をして、アプリ側からツイートさせるなどを実装したのでメモ。
今後も何かとやりそうでもあるので。

流れの概要は下記、

  1. twitter側でアプリ作成
  2. 作成したアプリを連携させるページへ飛ばす
  3. 連携ページからのコールバックからアクセストークン取得
  4. 取得したアクセストークンでツイートとかとか

twitter側でアプリ作成


Twitter Application Management

こちらからアプリを作成します。
作成したアプリのConsumer Key等をメモります。
Consumer Key (API Key)
Consumer Secret (API Secret)

ツイートさせる時は、アクセスレベル等も変更しておきます。

作成したアプリを連携させるページへ飛ばす

ここからはコチラ側のアプリの実装。

下記からlibraryがいくつかあるので有難く使わせてもらいます。
Twitter Libraries | Twitter Developers

今回使用したのはコチラ。

abraham/twitteroauth · GitHub
いい顔してます。

さっそくリクエストトークン、連携ページへのリンクの取得

require_once(twitteroauth/twitteroauth.php');

$consumer_key = 'xxxxxxxxxxx';
$consumer_secret = 'xxxxxxxxxxx';
$callback_url = 'http://hogehoge/callback';

$connection = new TwitterOAuth($consumer_key, $consumer_secret);
//リクエストトークン
$request_token = $connection->getRequestToken($callback_url);
//認証ページのURL
$auth_url = $connection->getAuthorizeURL($request_token);

連携ページからのコールバックからアクセストークン取得

ユーザが上記のページで連携承認すると、
設定したcallback_urlにリクエストがきます。
クエリストリングにoauth_verifierというものが付加されているので、
それを利用してアクセストークンを取得します。

//リクエストトークンはsession等に保存しておいたものを使う
$connection = new TwitterOAuth($consumer_key, $consumer_secret, $request_token['oauth_token'], $request_token['oauth_token_secret']);

//アクセストークン取得
$access_token	= $connection->getAccessToken($_GET['oauth_verifier']);

//暗号化とかした後にDB等に保存

取得したアクセストークンでツイートとかとか

  • ツイートさせてみる
$connection = new TwitterOAuth($consumer_key, $consumer_secret, $access_token['oauth_token'], $access_token['oauth_token_secret']);

$tweet_text = 'すた丼最強説';

$parameters = array('status' => $tweet_text);
$result = $connection->post('statuses/update', $parameters);
  • 対象ユーザをフォローさせてみる
$connection = new TwitterOAuth($consumer_key, $consumer_secret, $access_token['oauth_token'], $access_token['oauth_token_secret']);

$target_screen_name = 'フォローさせたいユーザ名';
$parameters = array('screen_name' => $target_screen_name);
$result = $connection->post('friendships/create', $parameters);

その他

  • pinコードでの認証バージョン

コールバックからアクセストークンを取得する方法のほかに、
ユーザにpinコードを入力してもらいアクセストークンを取得する方法もあります。
違いは、
・リクエストトークンを取得するときの引数に'oob'を指定
・※tiwitterアプリ側のcallback_urlを空にする

上記を行うと認証したあとにpinコードが表示され、
それを元にアクセストークンを取得できます。

$access_token	= $connection->getAccessToken($_POST['pin_code']);
  • アクセストークンの有効期限

OAuth FAQ | Twitter Developers
基本的には有効期限はないようです。
が、ユーザがtwitter側からアプリ連携を削除などもできるので、

下記のようにユーザ情報が正常に取得できるかで有効かどうかをチェックしたほうがよさそうです。

$connection = new TwitterOAuth($consumer_key, $consumer_secret, $access_token['oauth_token'], $access_token['oauth_token_secret']);
$user_info	= $connection->get('account/verify_credentials');


感謝致します。

f:id:ogataka50:20141107183252j:plain