とりあえず動作させてみよう「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を作る|技術者もどきの備忘録

広告

関連記事

Jenkins + iPhoneアプリ(2) -ローカルリポジトリにあるデータからipaファイル生成-

* これまで - * 最終目標 -(開発者)git(リモートリポジトリ)にソースをコミット

記事を読む

no image

iPhoneアプリ開発 −タッチで線を描く(1)−

* やりたいこと 今回やりたいことは以下の2点。 -(1) 画面をタッチして、指を動かして線を描きた

記事を読む

no image

iPhoneアプリ開発 -iOS6から変わったこと-

Deployment Targetを5.1にしていた時には気がつかなかったのですが、iOS6になって

記事を読む

NEC_0882

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

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

記事を読む

no image

PHP_CodeSniffer+ Eclipse + PHP Code Formatter Pluginでコーディング規約を守ったコーディング

1人でプログラミングをしているにしても、多人数でプログラミングをしているにしても、コーディング規約を

記事を読む

no image

Twitterでサービスにログイン -PHP(CakePHP1.3)で実践編-

以前、ソーシャルログインについて書きました。 ただ、Twitter連携にまだ触れてない人にはちょ

記事を読む

no image

jQuery Mobileの1.0Beta3、1.0RC1で起きた現象 -iOS5で動かない!?-

最近おきたjQuery Mobile周りについてのメモ。 本来なら色々チェックしてちゃんと原因を調

記事を読む

no image

CakePHP1.3でテストコード(2) -フィクスチャをいじってみる(テストデータの動的登録)-

cakePHP1.3でのSimpleTestを使ったテストケースの第2回目。 今回は、動的にテストデ

記事を読む

no image

「Google Apps」無償版の新規登録が終了

以前、「Google Apps」を利用した以下の記事を書きましたが、とうとう無償版の新規登録が終了

記事を読む

no image

はてなスターのアイコンを日本酒アイコンにしてみた

日本酒大好きです。 というわけで、はてなスターを日本酒アイコンにしてみました。 その流れ

記事を読む

広告

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 ↑