プログラミング言語や環境設定を中心としたパソコン関連の技術メモです。
主にシステム開発中に調べたことをメモしています。TIPS的な位置付けで、気が向いたときにちまちま更新していきます。
PHP、Twitterへの自動投稿機能を作成(2015年9月版)。
2013年4月に

PHP、Twitterへの自動投稿機能を作成。

なる記事で書いた通り、Twitterへの自動投稿機能を作りました。
その後、

PHP、Twitterへの自動投稿APIをversion1.0→1.1へ変更。
PHP、Twitterへの自動投稿APIがAPIの仕様変更?で動かなくなっていた。
PHP、Twitterへの自動投稿結果を取得して、エラーの場合はメールを送信する。

等でちまちまと更新していたのですが、
TwitterやTwitterOAuthの仕様が変わったりなんだりで
情報が陳腐化しちゃったみたいでですね。
現在ある物が動かなくなったわけではないのですが、
新しく作りたい人向けの情報としては役に立たないと感じました。

そこで今回、改めて一から作ってみることにしたわけです。

とは言え、根本的なやり方が変わるわけではありません。

1.Twitter側の準備として
   (1)Consumer key
   (2)Consumer secret
   (3)Access Token Secret
   (4)Access Token Secret secret
  の4つの値を取得する

2.TwitterOAuthを頂いてくる

3.PHPのプログラムを作る

の流れは一緒です。

ただし、2015年9月現在の最新版TwitterOAuthさんは、PHP5.4以降での使用を想定しているようです。
「array()」が短縮記法の「[]」で書いてありました。
そのため、PHP5.3系以前の環境では、そのままでは動きません。
「[]」で書いてある部分を「array()」で書き直す必要があります。
ご注意ください。

それでは、順番に見ていきましょう。

まずは、Twitter側の準備です。

(1)投稿用のTwitterアカウントを作成

(2)「https://apps.twitter.com/」にアクセスする
  右上の「Sing in」を押して「1.」で作ったアカウントでログインする
20150905-01.png


(3)ログインしたら右上の「Create New App」を押す
20150905-02.png


(4)必須項目(Name、Description、Website)を入力して
  規約に同意して(「Yes, I agree」にチェックをつけて)
  「Create your Twitter application」ボタンを押す
20150905-03.png
20150905-04.png


(5)なんか怒られたら、アカウントに携帯電話番号の登録をする
20150905-05.png


(6)「(5)」をやった場合は「(4)」をもう一度やる
  上手く行ったら一息つく
20150905-06.png


(7)「Keys and Access Tokens」タブに移動する
20150905-07.png


(8)「Application Settings」欄の「AccessLevel」が「Read and write」になっていることを確認する
 なっていなかったら「modify app permissions」リンクを押して「Read and Write」にする
20150905-08.png


(9)「Application Settings」欄にある「Consumer key」「Consumer secret」をメモる
20150905-09.png


(10)「Your Access Token」欄の「Token Actions」にある「Create my access token」ボタンを押す
20150905-10.png


(11)画面下部の「Your Access Token」欄にある「Access Token」「Access Token Secret」をメモる
20150905-11.png
20150905-12.png


これで「Consumer key」「Consumer secret」「Access Token」「Access Token Secret」が
手に入ったはずです。
ここまでで

1.Twitter側の準備として
   (1)Consumer key
   (2)Consumer secret
   (3)Access Token Secret
   (4)Access Token Secret secret
  の4つの値を取得する

の作業は完了です。

次はTwitterOAuthの入手です。

(1)「https://github.com/abraham/twitteroauth」にアクセスする
20150905-13.png


(2)画面右の真ん中ら辺にある「Download Zip」ボタンを押す
20150905-14.png


(3)ダウンロードした「twitteroauth-master.zip」を解凍する

(4)必要に応じて「twitteroauth-master」フォルダの名前を変える
 私は「twitteroauth-master」→「twitteroauth」と変更しました。

これでTwitterOAuthが手に入りました。

2.TwitterOAuthを頂いてくる

の作業は完了です。

さて、これで事前準備は整いました。
いよいよ、Twitterへ自動投稿するPHPプログラムの作成です。

細かい説明は端折って、私の環境で動いたサンプルを載せておきますね。
そんなに複雑ではないので見れば分かると思います。
サンプルはこんな感じφ(--)

<?php

    //「autoload.php」読み込み
    //「twitteroauth/」フォルダは本プログラムと同階層に配置
    require_once dirname(__FILE__) . '/twitteroauth/autoload.php';
    use Abraham\TwitterOAuth\TwitterOAuth;

    // 「Consumer key」値
    $ck = さっきメモった「Consumer key」の値;
    // 「Consumer secret」値
    $cs = さっきメモった「Consumer secret」の値;
    // 「Access Token」値
    $at = さっきメモった「Access Token」の値;
    // 「Access Token Secret」値
    $ats = さっきメモった「Access Token Secret」の値;

    //リクエストを投げる先(固定値)
    //※前の「https://api.twitter.com/1.1/」と後ろの「.json」は
    // TwitterOAuth内で勝手にくっつくのでいらない
//    $url = "https://api.twitter.com/1.1/statuses/update.json";
    $url = "statuses/update";

    //投稿する文言
    $postMsg = "自動投稿テストです。";

    // OAuthオブジェクト生成
    $toa = new TwitterOAuth($ck,$cs,$at,$ats);

    //投稿
    $res = $toa->post($url, array("status" => "$postMsg"));


    // レスポンス表示
    var_dump($res);

?>


基本的な処理の流れは以前と同じです。
1.TwitterOAuthを読み込んで
2.newして
3.リクエストを投げて
4.レスポンスを受け取っている
だけです。

ただし、戻りがちょっと違います。

以前はjson形式でそのまま返ってきていましたが、
今はPHPの標準クラスであるstdClassに格納されて返ってくるようです。

サンプルの実行結果は以下のようになりましたφ(--)

object(stdClass)#3 (23) {
    ["created_at"]=>
    string(30) "Sat Sep 05 02:26:30 +0000 2015"
    ["id"]=>
    int(ほげほげ)
    ["id_str"]=>
    string(18) "ほげほげ"
    ["text"]=>
    string(33) "自動投稿テストですよ。"
    ["source"]=>
    string(75) "<a href="http://wa3.i-3-i.info" rel="nofollow">わわわIT用語辞典2</a>"
    ["truncated"]=>
    bool(false)
    ["in_reply_to_status_id"]=>
    NULL
    ["in_reply_to_status_id_str"]=>
    NULL
    ["in_reply_to_user_id"]=>
    NULL
    ["in_reply_to_user_id_str"]=>
    NULL
    ["in_reply_to_screen_name"]=>
    NULL

(以下略)

あと、上の方でも軽く書きましたが、
2015年9月現在のTwitterOAuthは、PHP5.4以降での使用を想定しているようです。

「array()」が短縮記法の「[]」で書いてありますので、
PHP5.3系以前の環境では、そのままでは動きません。
「twitteroauth/src/TwitterOAuth.php」の「[]」で書いてある部分を
「array()」で書き直す必要があります。

逆に言えば「[]」で書いてある部分を「array()」で書き直せば動きますけどね。
他の処理は分かりませんが、少なくとも自動投稿に関しては、
書き直せばPHP5.3環境でも動きました。

あとは、作ったプログラムをcronにでも登録すれば完了です。

だいぶ長くなったけど、そんな感じ\(--)/
スポンサーリンク
 
このエントリーをはてなブックマークに追加 

category:● PHP  thema:システム開発 - genre:コンピュータ  Posted by ササキマコト 

  関連記事