【保存版】2013年度発売全パチスロアプリ一覧(iPhone,iPad)

【CakePHP】楽々Twitter連携!Cron自動ツイートbot君をCakePHP2系で作る。

CakePHPのソーシャルネットワークの連携をしたいということは
多いのではないでしょうか。

今回はTwitterをとりあげます。実はすでにTwitter連携に関して
わかりやすく書かれているサイトも多いのですが、
CakePHP1系が多かったので今回、CakePHP2系での方法を
ご紹介します。

やりたいことは、サイトのニュースを自動ツイートすること。
具体的には「定期的に更新情報を確認し、更新があればツイッターで
その内容をツイートする。」という感じです。

これを全てスクラッチで作ると全然楽々ではありません。

そこでネットを探索すると、
今回やりたいこととほぼ同様のことををされていたのが、
やーんさんの
CakePHPでTwitterのbotを動かす。
でした。うまく外部Twitter連携PHPモジュールを呼び出して
自動ツイートを実現されておられました。

ただ、さらにもっと楽に自動ツイートできる方法は
ないかと探したところ、Twitter連携するCakePHP用のクラスを
提供している方がいらっしゃいました。
結果的にはこちらのクラスでTwitter連携を実現しました。
丁寧なサンプルもついていて簡単に使えます。

OAuth consumers for CakePHP - by cakebaker

OAuth consumers for CakePHP - by cakebaker


ちなみに、CakePHPでTwitter連携をされている方にはこのクラスを
利用されている人が多いようです。
では、Twitterで自動ツイートできるまでをご紹介します。

(サマリー)
1 Twitterアカウントを取得する
2 TwitterAPI利用申請を行う
3 「OAuthClient」(Twitter連携用CakePHP用モジュール)を設置する
4 自動ツイートをShellで実装する
5 (テスト)XAMPP環境でツイート実行確認を行う
6 (本番)レンタルサーバー環境でツイート実行確認を行う

(手順)

1 Twitterアカウントを取得する


Twitter

2 TwitterAPI利用申請を行う


Twitter My applications
API利用するアプリケーションの登録を行います。
登録時のポイントは、Application typeを「Read and Write」とすること。
今回はbotがツイートするだけなのでURLコールバックはブランクで
構いません。なお、これらの項目は後からでもSettingsタブから
変更可能ですのでご安心を。
登録語、access tokenを生成してください。
API利用時にはここで取得したConsumer key及びaccess tokenを
利用します。

twitterapi

3 「OAuthClient」(Twitter連携用CakePHP用モジュール)を設置する


Class版とコンポーネント版がありますが、今回はClass版を使用します。
また、それぞれCakePHP1系と2系が分かれています。
2系では、クラス名の変更とApp::usesの記述が変わっています。

(ダウンロード先)
OAuth consumers for CakePHP - by cakebaker

展開すると、OAuthというディレクトリがありますので、このOAuthを、
ベンダーディレクトリへ設置します。
ベンダーディレクトリは、Cake本体とアプリケーション別の2箇所ありますが、
私はCake本体側へ設置しました。

(設置イメージ)
/vendors/OAuth
       -LICENSE.txt
       -OAuth.php
       -OAuthClient.php

4 自動ツイートをShellで実装する


--------------------------------------------------------------------
*2013/06/20 追記
TwitterのAPIバージョンが1.1にあがりましたので、対応しました。
(旧)http://api.twitter.com/1/statuses/update.json
(新)http://api.twitter.com/1.1/statuses/update.json
--------------------------------------------------------------------

app/Console/Command/TweetShell.php

<?php
App::import('Vendor', 'OAuth/OAuthClient');
class TweetShell extends AppShell {
  public $uses = false;

  protected function _createClient() {
    return new OAuthClient(
      'ここにConsumer keyを設定', //Consumer key
      'ここにConsumer secretを設定' //Consumer secret
    );

  }

  public function post() {
    $client = $this->_createClient();
    $client->post(
      'ここにAccess tokenを設定', //Access token
      'ここにAccess token secretを設定', //Access token secret
      'http://api.twitter.com/1.1/statuses/update.json',
      array(
        'status' => 'testツイートです。'
      )
    );
  }
}

・Consumer key
・Consumer secret
・Access token
・Access token secret
の4つのキーについては 手順2の「TwitterAPI利用申請を行う」で
取得したキーを使用します。
以下から確認可能です。
Twitter My applications

ツイートする内容についてはstatusで設定します。
今回は「testツイートです。」という内容でツイートします。

5 (テスト)XAMPP環境でツイート実行確認を行う


WindowsのDOS画面からshellを起動します。
このときphp及びコンソールへのパスが通っていないと
Appがないというエラーが発生します。
「Class 'App' not found in...」

WinXPでパスを通すには
コントロールパネル→システム→詳細設定→環境変数の
システム環境変数の変数Pathの変数値を編集します。
現在設定されている値の後ろに、
c:¥xampp¥php¥;C:¥xampp¥htdocs¥cake¥app¥Console¥
を追加します。
なお、赤字の箇所はxamppのインストール場所とcakeの
インストールフォルダ名に依存するため環境により異なります。

パスの通し方についてはこちらのエントリが参考になりました。
Cakephp Windowsでバッチを実行する

パスを通した後、
コマンドプロンプトでcakeインストールappフォルダへ移動します。
確認のためcakeコマンドを実行してください。
Available Shellsに実行できるシェルコマンドが表示されます。
ここに[CORE]のシェルコマンドのほかに
[app]に独自に作成したシェルコマンドが表示されているかと
思います。
他にシェルが無い場合、手順4で作成した「Tweet」シェルが表示されて
いるはずです。

cakephpシェル確認DOS


問題なく表示されていましたら手動でツイートしてみます。
(コマンド)
cake Tweet post

実行後、正常にツイートできていることをツイッター上で
確認してみます。

cakephpshellテストツイート
無事ツイートできているようです。

6 (本番)レンタルサーバー環境でツイート実行確認を行う


最後に本番環境からCronでシェルを起動時自動実行することを
確認します。
私の本番サイトはレンタルサーバー上で構築していまして、
Xserverのレンタルサーバーを使っています。
ここではXserverでのCron設定を説明します。
管理画面のCron設定からCronの実行設定を行います。
(コマンド)
/usr/bin/php5.3 /home/アカウント/ドメイン/cake/app/Console/cake.php Tweet post -app /home/アカウント/ドメイン/cake/app

ポイントは、appのパスを通すこと。
パスを通していない場合、FatalErrorが発生して実行できません。
コマンドの書き方で試行錯誤したのですが、
CakePHPでシェル機能を使ってみる
の情報を参考にしました。こちらはさくらサーバの設定方法でしたが、
Xserverも同じような記述で正常動作しました。

(ちょっと宣伝)
XserverでCakePHPを使ったサイトを作っています。
問題なくCakePHPが動作し、マルチドメインにも対応しており非常に
快適です。レンタルサーバーをお探しの方は一度試用してみてください。
月額1,050円で高機能・安心レンタルサーバー Xserver


まとめ


「OAuth consumers for CakePHP」というTweet連携モジュールを
使うことにより簡単にTweet実行を実装できました。
こういう有益なモジュールがいろいろと
公開されているのもCakePHPのいいところだと思います。
また自動実行させるために処理をシェルにしていますが、
シェルもCakePHPの標準提供機能です。

それではよきCakePHPライフを。

(おまけ)
今回CakePHPで作ったサイトは
スロットアプゲリオン

スロットアプゲリオントップ

iPhone、iPadで遊べるパチスロアプリのまとめサイトです。
紹介していただければ泣いて喜び、その画像をアップしちゃうかも
しれません。(嘘です。喜ぶのはほんとですが。)

(CakePHP2.0系サイト構築でお世話になった書籍)
>>CakePHP2 実践入門 (WEB+DB PRESS plus)

このエントリを書いた後なのですが、第16章にソーシャル連携
という章がありました。こちらにはTwitterKitというプラグインに
よるTwitter連携の方法が記述されていました。
こちらでも手軽にTwitter連携できそうです。
(参考サイト)
CakePHP2.0 で TwitterKit Plugin の使い方 | GNJYOブログ
CakePHP2でTwitterのOAuth認証を使用する(TwitterKit Plugin) | 青鬼

>>WebデザイナーのためのCakePHPビューコーディング入門

[Google PR]

Twitterはじめました。プラプラ | Twitter

<< 【セキュリティー】先日修正されたPDFの脆弱性をつく日本語版ウイスルファイルが出現しているようです。
【iOS】パチスロアプリKPE「マジカルハロイン3」が発売されました。萌えスロアプリまとめ。 >>

[関連エントリ 最新5]

[Google PR]


[最新エントリ 5]

>>トップページ
人気カテゴリ:AccessTips SQLServer CakePHP iPad
過去ログ(全記事一覧)

コメント
コメントする(お気軽にどうぞ)









この記事のトラックバックURL
トラックバック
カテゴリー
プロフィール
お問い合わせ
Powered by NINJA TOOLS
links
recent comment
  • 【Access】vbaでhmacが正しく計算できた!!
    まさ (06/01)
  • 【Access】AccessReportMailメール送信時のポートを25から587へ
    わら (05/31)
  • 【SQLServer】超シンプル!再帰CTE(共通テーブル式)で連続データを作成する。
    sazi (09/08)
  • 【あまっちゃお】Amazon商品検索「あまっちゃお」プロジェクト始動。Ver00-06-00 β
    カメちゃん (07/31)
  • 【Access】あれ?DoCmd.RunCommand acCmdSaveRecordの内部仕様が変わった?
    花姉 (03/17)
  • 【Access】実行中のmdb(自分自身)をバックアップコピーする方法。
    亀 (02/06)
  • 【雑記】Amazonでの注文時、TMGさん発送にご注意を。納期を守れない可能性あり!
    管理人 (01/31)
  • 【雑記】Amazonでの注文時、TMGさん発送にご注意を。納期を守れない可能性あり!
    あ (01/31)
  • 【雑記】Amazonでの注文時、TMGさん発送にご注意を。納期を守れない可能性あり!
    K (11/13)
  • 【VAIOP】VaioXと両持ちできるものすっっごくマニアックなケース。当たり前ですが在庫限り。(笑)
    管理人 (08/04)
recent trackback
  • 【Access】2003安全でない式がブロックされていませんとセキュリティーレベル。
    awgs Foundry (10/29)
  • 【VAIOtypeP】液晶保護シートは、新車のカバーではない。レイアウト社液晶/天板保護フィルムセットRT-VP1FS1
    XMLがキライ。 (04/09)
  • Vistaから、LinkStation(NAS)にアクセスできません。
    そのほかいろいろ (09/06)