T-CREATOR

PHP(Codeigniter使用)からブログ投稿時にTwitterへ自動投稿してみました。

PHP(Codeigniter使用)からブログ投稿時にTwitterへ自動投稿してみました。
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

PHP(Codeigniter使用)からブログ投稿時にTwitterへ自動投稿したのをメモしました。

Twitter開発者ページ

下記URLからTwitterの開発者ページヘアクセスします。
https://dev.twitter.com/

Twitter開発者ページからアプリを作成

1.「My applications」をクリック

「My applications」をクリックします。 「My applications」をクリック

2.「Create New App」をクリック

「Create New App」をクリックします。 Create New App」をクリックし

3.「アプリの名前」「アプリの説明」「アプリのURL」を入力

「アプリの名前」「アプリの説明」「アプリのURL」を入力し
規約を読んでチェック、「Create your Twitter application」をクリックします。

「アプリの名前」「アプリの説明」「アプリのURL」を入力し規約を読んでチェック、「Create your Twitter application」をクリック

※もし下記のようなエラーメッセージがでたら、下記リンクからモバイル認証を行ってください。 https://twitter.com/settings/devices

エラーメッセージ

4.「API Keys」のタブをクリックして「API key」・「API secret」をメモ

「API Keys」のタブをクリックして「API key」・「API secret」をメモして
「Change App Permissions」をクリックします。 「API Keys」のタブをクリックして「API key」・「API secret」をメモして  「Change App Permissions」をクリックし

5.「Pemissions」のタブから「Read and Write」をチェック

「Pemissions」のタブから「Read and Write」をチェック、「Update settings」をクリックします。 「Pemissions」のタブから「Read and Write」をチェック、「Update settings」をクリック

6.「API keys」のタブから「Create my access token」をクリック

「API keys」のタブから「Create my access token」をクリックします。 「API Keys」のタブをクリックして「API key」・「API secret」をメモして  「Change App Permissions」をクリックし

7.「Access token」・「Accesstoken secret」をメモ

「Access token」・「Accesstoken secret」をメモします。 「Access token」・「Accesstoken secret」をメモ

実装準備

tmhOAuthの設置

1.Githubから「tmhOAuth」をダウンロード

下記リンクへアクセスし「tmhOAuth」をダウンロードします。
※URLは変更になっている場合がございます。2014/2/18日時点のURL

https://github.com/themattharris/tmhOAuth

「tmhOAuth」をダウンロード

2.ダウンロードした「tmhOAuth-master.zip」を解凍

ダウンロードしたtmhOAuth-master.zipを解凍します。

3.ディレクトリのコピー

解凍してできたtmhOAuth-masterファイルのなかの
tmhOAuth-master/twitteroauth.phpファイルを下記ディレクトリへコピーします。

markdown└── tmhOAuth-master
    └── twitteroauth.php

下記application/librariesディレクトリはCodeIgniteapplicationディレクトリです。

markdown└── application
    └── libraries
        └── twitter_sdk
            └── twitteroauth.php

実装

Codeigniterへ記述

サンプルコードについて

サンプルコードは「Codeigniter」で簡易的なブログを作成していると想定し
「post.php」の「add」は記事を新しく投稿するページとします。

今回は投稿するデータをTwitterに自動反映するということで、
「Controller」に渡ってきたポストデータをそのままTwitterへ送る形を例とします。
記述箇所などは適宜変更してください。

先ほどメモしたTwitterの「API key」「API secret」「Access token」「Accesstoken secret」と投稿するメッセージを入力します。

サンプルコード

application/controller/post.php<?php
    class Post extends CI_Controller {
        public function __construct() {
            parent::__construct();
            //モデルを読み込みます。
            //application/models/post_model.php
            $this->load->model('post_model');
        }
        public function add() {
            //ヴァリデーションは任意のものを設置してください。
            $this->load->library('form_validation');
            if ($this->form_validation->run() == FALSE){
                //サンプルview application/view/post_add.php
                $this->load->view('post_add');
            }else{
/* Twitter投稿ここから */
                //先ほどメモしたTwitterの「API key」「API secret」「Access token」「Accesstoken secret」
                //用途によって記述箇所を変更してください。
                $twitter = array(
                    'consumer_key' => 'API key',
                    'consumer_secret' => 'API secret',
                    'token' => 'Access token',
                    'secret' => 'Accesstoken secret',
                    'curl_ssl_verifypeer' => false ,
                    'timezone'=> 'Asia/Tokyo'
                );
                $message = array(
                    'status' => 'ブログを更新しました。'."\n".'http://t-cr.jp/'
                );
                $this->load->library('twitter_sdk/tmhoauth',$twitter);
                try {
                    $this->tmhoauth->request('POST', $this->tmhoauth->url('1.1/statuses/update'), $message, true, false);
                }catch (Exception $e){
                    echo "Error occured!! This Script was terminated.";
                    exit;
                }
/* Twitter投稿ここまで */
                //サンプルmodel モデルの関数を実行します。
                $this->Post_model->insert_post($this->input->post());
                //サンプルview application/view/post_success.php
                $this->load->view('post_success');
            }
        }
    }

コメントの/* Twitter投稿ここから */ から /* Twitter投稿ここまで */が実際の処理になります。

今回は「Controller」に記述していますが用途に合わせて変更してください。

一度アプリの認証をしてから、投稿すると「Twitter」に投稿が反映されます。

記事Article

もっと見る