とりあえず動作させてみよう「PHP+OAuthでTwitterに投稿」(追記あり)

公開日: : 最終更新日:2014/04/20 IT, Twitter


Nb4uで自動でTwitterに投稿したいと思ったのでTwitter周りについて調べてみた。

 何がやりたいか?

Nb4uにある新書データ(10日以内に発売予定の新書)を元に1日に1回(ぐらい)自動で投稿する。

投稿する内容は以下のような形式

「本の名前」 発売まであとX日 http://nb4u.pplace-service.com/ #nb4uinfo

 やったこと

  1. twitter developersに登録
  2. すぐに使えるスクリプトとしてtwitteroauth.phpとOAuth.phpをdownload
  3. cron用のスクリプトを記入
  4. cronに登録

1. twitter developersに登録

登録する際にログインしているのは、自動投稿したいTwitterアカウントにします。

記述した内容は以下のような感じです。

  • Application Name

    • ○○から投稿で表示される名前/「私の場合はnb4u_bot」にしました。
  • Description
  • Application Website
  • Organization
  • Application Type
  • Callback URL

    • 今回の用途では利用しません。
  • Default Access type

    • 書き込みが必要なので「Read & Write」にしています。
  • Application Icon

    • 今回の用途では特に利用しません。

登録が終わったら必要な値を取得しておきます。
「Application details」をクリックして以下の2つを取得します

  • コンシューマー・キー
  • コンシューマー・シークレット

さらに「My Access Token」をクリックして以下の2つを取得します。

  • Access Token (oauth_token)
  • Access Token Secret (oauth_token_secret)

2. すぐに使えるスクリプトの取得

自前で作るのも有りですが、今回は簡単に作ってしまおうということでtwitteroauth.phpとOAuth.phpをダウンロードします。
ダウンロードしたものを展開します。

3. スクリプトを作成

cron用のスクリプトを作成する前に、本当に動くのかを確認します。

<?php
require_once("twitteroauth.php"); //2でダウンロードしたファイルを読み込みます。
$consumer_key = "1で取得したコンシューマー・キー";
$consumer_secret = "1で取得したコンシューマー・シークレット";
$access_token = "1で取得したAccess Token"; //
$access_token_secret = "1で取得したAccess Token Secret";
$twitter = new TwitterOAuth($consumer_key,$consumer_secret,$access_token,$access_token_secret);
//Twitterへ投稿します。
$req = $twitter->OAuthRequest("https://twitter.com/statuses/update.xml","POST",array("status"=>"サンプル投稿"));

上記のスクリプトを実際に動かしてみて問題ないので、cron用のスクリプトを作成。
作り方は、定期的にデータ取得のためにCakePHP1.3でシェル機能を利用 | PPl@ceを参考。
※以下はサンプルです。

<?php
class BatchShell extends Shell {
    var $uses = array('book');
    function main() {
        $newBookData = $this->book->getNewBookData();
        if(empty($newBookData)) return;
        require_once("twitteroauth.php"); //2でダウンロードしたファイルを読み込みます。
        $consumer_key = "1で取得したコンシューマー・キー";
        $consumer_secret = "1で取得したコンシューマー・シークレット";
        $access_token = "1で取得したAccess Token"; //
        $access_token_secret = "1で取得したAccess Token Secret";
        $twitter = new TwitterOAuth($consumer_key,$consumer_secret,$access_token,$access_token_secret);
        foreach($newBookData as $key => $val)
        {
            $message = "「 " . $val["title"] . "」 発売まであと". $val["days"] ."日 http://nb4u.pplace-service.com/ #nb4uinfo";
            $req = $twitter->OAuthRequest("https://api.twitter.com/1/statuses/update.xml","POST",array("status"=> $message));
        }
    }
}

[追記]
2012年10月頃から「https://twitter.com/statuses/update.xml」は利用できなくなりました。
そのためバージョンを明記した「https://api.twitter.com/1/statuses/update.xml」に変更する必要があります。

4. cronに登録

そして最後は、cronに登録。
Twitterでは、同じ内容を投稿するのはアウトなので内容が変わるように1日に1回投稿するようにに調整。

これで自動で投稿されるようになりました。

 まとめ

これで、自分のアカウント(nb4u_bot)での自動投稿はできるようになりました。

他のユーザに対してこのようなことをするには、もう少し面倒なことをする必要が有ります。
ただ、それは今回とは異なるまた別の話。
※それもこの前、1から実装したので、どこかで機会があれば書きます。

 参考サイト

  1. PHP+OAuthでTwitter – SDN Project
  2. PHP+OAuth認証で、Twitterの自動投稿APIを作る|技術者もどきの備忘録

広告

関連記事

iPhoneアプリ開発 芳名帳アプリ作成(2) -記帳画面作成-

* 今までの流れ - * 画面構成 今回の芳名帳アプリは以下の画面で構成しています。 -

記事を読む

Selenium2.0でUIテスト(1) -まずはPHPでやってみる-

久しぶりにSeleniumを触ってみました。 Selenium2.0から色々と変わったみたいで少々

記事を読む

no image

ターミナルでgitのコマンドを補完したりブランチ名を表示する – macでgitを便利に使うために –

* やりたいこと macのターミナルでgitをいじっていると -今のブランチってなんだっけ? -g

記事を読む

NEC_0882

Facebookで名刺を作ってみた -Mooの名刺作成サービス-

1ヶ月~半月くらい前に話題になっていたMooの名刺作成サービス。 話題になっていた時期に注文した名

記事を読む

no image

iPhoneアプリ開発 −フォントの変更−

一言:最近、iPhoneアプリの開発のためMacばかり触ってて、Windowsに戻ると混乱します。

記事を読む

1

Androidアプリ開発 -9patchで吹き出し画像を作る-

* やりたいこと TextViewで文字を表示させ、背景画像に吹き出し画像を設定した場合。 文字

記事を読む

setup

Google Appsで独自ドメインメールの利用

独自ドメインでメアドを持ちたかったのでGoogle Appsを利用してみました。 その各種設定の覚

記事を読む

no image

iPhoneアプリ開発 −複数前の画面に戻る−

* やりたいこと ある画面から別の画面に遷移したい。 -1つ前の画面に戻りたい。 -2つ前の画面に戻

記事を読む

no image

TestLink1.91のバグの修正方法

どうやらTestLink1.91にはバグがあるようなので、修正方法を以下に記述。 Test

記事を読む

no image

PhoneGapを触ってみた(3) -画像を扱う(Camera APIを使ってみる)-

今回は、PhoneGapのCamera APIを使って携帯のアルバムにある画像を扱ってみます。

記事を読む

広告

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

広告

no image
[感想] Effective Objective-C 2.0 ☆☆☆☆★(4.5)

* 構成 - 第1章 Objective-Cに慣れる -

no image
[感想] iOSアプリテスト自動化入門 ☆☆☆(3.0)

* 構成 - Chapter 1 テスト自動化への取り組み

DeployGateを試してみた(iOS編) -DeployGateがiOSに対応-

今までのDeployGate - -[http://pplace.

iPhone/iPadアプリを開発するためにやったこと

今までに、iPhoneを3本ほどリリース((リリースしたアプリは全て1

no image
ターミナルでgitのコマンドを補完したりブランチ名を表示する – macでgitを便利に使うために –

* やりたいこと macのターミナルでgitをいじっていると -今の

→もっと見る

PAGE TOP ↑