twitter サービスホーム画面作成

twitter サービスホーム画面作成

#05 ホーム画面を作ってみよう
http://dotinstall.com/lessons/tw_connect_php_v2/21905
を参考に、ログインしたあとのホーム画面を作成

index.php を作成し

require_once('config.php');
require_once('codebird.php');

で設定ファイルとライブラリを読み込む

HTML部分は

<!DOCTYPE html>
<html lang="ja">
<head>
        <meta charset="utf-8">
        <title>ホーム画面</title>
</head>
<body>
<h1>ホーム画面</h1>
<p>twitter アカウントでログインしています</p>
<p><a href="logout.php">[ログアウト]</a></p>


</body>
</html>

とする

つぶやき関連はリスト形式で表示するので

<ul>
<li></li>
</ul>

であとで表示していく

twitter login config.php

twitter login config.php

http://dotinstall.com/lessons/tw_connect_php_v2/21904

#04 アプリの設定をしよう
を参考に
設定ファイルを作成していく

まず、codebird.php を使うため
Filezilla で vagrant で作成した仮想マシンへ
SFTPで転送

再度 vagrant マシンに戻り

cp ~/codebird.php .
で転送したファイルを開発ディレクトリにコピー

vim config.php でファイルを作成し
設定を記述していく

define() を使って定数を定義していく

データソースネーム
ユーザ名
パスワードを設定するので

define('DSN','mysql:host=localhost;dbname=dotinstall_tw_connect_php');
define('DB_USER','dbuser');
define('DB_PASSWORD','1A38jsd');

そして twitter API へアクセスするための
コンシューマーキー
コンシューマーシークレットも
定数で設定しておく

define('COMSUMER_KEY','Consumer keyの値');
define('COMSUMER_SECRET','Consumer secretの値');

そして、サイトURLも定数にする

define('SITE_URL','http://dev.dotinstall.com/tw_connect_php/');

エラー出力の設定を
NOTICE以外すべて出力するため

error_reporting(E_ALL & -E_NOTICE);

セッションの設定のため

session_set_cookie_params(0,'/tw_connect_php/');
session_set_cookie_params();

については
http://php.net/manual/ja/function.session-set-cookie-params.php
を参考

引数については
0が有効期限

‘/tw_connect_php/’
がクッキーのドメイン

となる

twitter login

twitter login

http://dev.dotinstall.com/tw_connect_php/
で行い

HTML
PHP
CSS
MySQLを使う

cordebird.php
を使うため
https://github.com/mynetx/codebird-php
からダウンロード

アプリ登録が必要なので
https://dev.twitter.com/
へアクセスし、アプリを登録

登録方法は
http://dotinstall.com/lessons/tw_connect_php_v2/21902
の動画を参照

アプリ作成時に名前に twitter とはいっているとダメなので
name に
DTlogintest
これは、他の人ともかぶらないアプリ名にするため

description つまりアプリの概要に
twitterlogin

website には開発環境のURL
http://dev.dotinstall.com

callback url には
http://dev.dotinstall.com/tw_connect_php/callback.php
として実際の callback.php はあとで作成する

これで作成完了すると
アプリの詳細画面になる

この中で使うのは
Consumer key

Consumer secret
の値

ここまでできたら、今回は vagrant で作成した仮想マシンをつかっていく

仮想マシンを作成したディレクトリに移動して
vagrant up

vagrant ssh
でログインして

cd /var/www/html/
で移動

mkdir tw_connect_php
でディレクトリ作成して

cd tw_connect_php/
で移動

以下、ここで作成していく

まず、DBを作成していく

mysql -u root -p でログインして

crate database dotinstall_tw_connect_php;
でDB作成

grant all on dotinstall_tw_connect_php.* to dbuser@localhost identified by’1A38jsd’;
で権限をもったユーザを作成

use dotinstall_tw_connnect_php;
で使用するDBを指定

create table users(
id int not null auto_increment primary key,
tw_user_id varchar(30) unique,
tw_screen_name varchar(15),
tw_access_token varchar(255),
tw_access_token_secret varchar(255),
created datetime,
modified datetime
);

まず、連番の主キーを作成するので
id int not null auto_increment primary key

twitter のユーザID、名前を格納するため
tw_user_id varchar(30) unique,
tw_user_name varchar(15),

twitter の access token と acccess_secret を格納したいので
tw_access_token varchar(255),
tw_access_token_secret varchar(255),

あとは作成と変更の時間を格納するため
created datetime,
modified datetime
とする

これらsqlをそのまま実行してもできるけど
今後、別の環境でも作成したいのなら
twitter.sql というように sql ファイルを作成し
sqlを書いて

mysql -u root -p < twitter.sql として mysql root のパスワードを入れれば DBを作成できる

twitter のユーザ認証

twitter のユーザ認証
#07 ユーザー認証をしてみよう
http://dotinstall.com/lessons/tw_connect_php_v2/21907
を参考にユーザ認証について学習
認証したユーザーの情報を取得するためのAPIは
https://dev.twitter.com/docs/api/1.1/get/account/verify_credentials
を参考にする
認証に必要な callback.php を作成
ユーザ認証には
codebird.php を使うので
require_once(‘config.php’);
require_once(‘codebird.php’);
で読み込む
ファイルのパスに注意
初期化に
consumer key
consumer secret
が必要なので、これは定数から取得する
初期化のあたりは、
https://github.com/mynetx/codebird-php

1. Authentication
を参考にして、ほぼコピペ
Codebird\Codebird::setConsumerKey(‘YOURKEY’, ‘YOURSECRET’);

Codebird::setConsumerKey(CONSUMER_KEY, CONSUMER_SECRET);
というように定数に変更
$cb = \Codebird\Codebird::getInstance();
はそのままコピペ
ユーザ認証関連もコピペでOKらしいけど
https://github.com/mynetx/codebird-php

Or you authenticate, like this:
の下にコードが載っているが、バージョン変更されたのか
コードが微妙に違っているので
http://dotinstall.com/lessons/tw_connect_php_v2/21907
の部分を使ってみた
twitter で認証されると
GETで ’oauth_verifier’ が渡される
if (! isset($_GET[‘oauth_verifier’])) {
なので、もし渡されないならという意味
$auth_url = $cb->oauth_authorize();
header(‘Location: ‘ . $auth_url);
die();
では、 twitter 認証画面に飛ばしている
その場合、スコープ内の処理が実行される
認証できたなら
else のスコープの中の処理が実行される
‘oauth_verifier’
は認証完了したときに返ってくる値
$_SESSION[‘oauth_token’] = $reply->oauth_token;
$_SESSION[‘oauth_token_secret’] = $reply->oauth_token_secret;
はユーザが必要なAPIにアクセスするのに必要
$cb->setToken($reply->oauth_token, $reply->oauth_token_secret);
でユーザが必要なAPIを使えるようにする処理
$me = $cb->account_verifyCredentials();
でユーザ情報をみることができる
ここまでできたら
var_dump($me);
で格納できているか確認
account_verifyCredentials();

codebird.php での twitter API を使ったアクセス方法
詳しくは
https://github.com/mynetx/codebird-php
3. Mapping API methods to Codebird function calls
を参考に

ツイッターでログインするWebサービス作成 

ホーム画面の作成
http://dotinstall.com/lessons/tw_connect_php_v2/21905
を参考に
/var/www/twitter/へ
index.php を作成
まず、
reqiure_once(‘config.php’)l
require_once(‘codebird.php’);
で必要なファイルの読み込み
このとき、注意点として
config.php

codebird.php

index.php とおなじディレクトリにおくこと
これを間違えるとファイルパスが違っていて
画面が真っ白になるので注意
ファイルの有無は
Linux なら ls コマンドをつかって確認可能
もし、別の場所におきたいのなら
require_once() のパスを変えること
これは、java の import
C の include と同じ
次に
HTMLタグを使って画面を作成
普通のHTMLと変わらないけど
a要素で
<a href=”logout.php”>ログアウト</a>
というようにログアウトする処理をつけること
そして、つぶやきのリスト表示のため
<ul>
<li></li>
</ul>
で場所を指定しておく
ファイルの編集はテキストエディタではなく
Eclipse を使用
ただ、あまり多くのプロジェクトが開いていると面倒なので
Ctrl[ + Shift] + W [全て]閉じる
で一旦今つかっているのを消しておきます
Eclipse と追加プラグインにより、
コードの記述が楽になるし、タイプミスが減るので
便利ツールは活用することをおすすめします
Eclipse にはショートカットキーがあり
これを知っていると作業効率があがります
http://dotinstall.com/lessons/tw_connect_php_v2/21906
を参考にログイン画面を作成
セッションを使うので、コードを追記
session_start();
でセッション開始
そして、ログイン判定をif で実装
ログインしているなら me に格納します
if (empty($_SESSION[‘me’]))
は me の中身が空ならという意味
header(‘Location: ‘.SITE_URL.’login.php’);

SITE_URL は config.php で
定義した定数で、サイトのURL
これは公開環境じゃなくて
ローカルIPでもOK
PHPでは . で java script の+連結みたいに使えるので
SITE_URL.’login.php’
http://192.168.10.248/login.php
という意味になる
これができたら、次にログイン画面作成
最初からつくるのは面倒なので
cp base.html login.php
でファイルをコピーし
内容を編集します
変更点として
a要素で
ログインするため、いろいろな処理をするのは
callback.php になっているので
<a href=”callback.php”>twitter でログイン</a>
というように、ファイルを指定します

twitter アプリのための設定

twitter アプリのための設定
#04 アプリの設定をしよう
http://dotinstall.com/lessons/tw_connect_php_v2/21904
に書かれているソースを
/var/www/twitter/config.php に追記していく
必要なものを定数として格納する
定数はPHPでは define() で行う
左が自作の定数
右がその内容
となる
つまり、メンテを考えると、非常に効率的
右の値を変えるだけで、簡単に変更ができる
define(‘DSN’, ‘mysql:host=localhost;dbname=dotinstall_tw_connect_php’);
では
ホスト名、DBの名前になる
今回なら
ホスト名 = localhost
DB名 = dbname=dotinstall_tw_connect_php
どちらも sql の設定で行ったもの
define(‘DB_USER’, ‘dbuser’);
これはユーザ名
grant all on dotinstall_tw_connect_php.* to dbuser@localhost identified by ‘**********’;
で作成した
@localhost の前にある名前
また
define(‘DB_PASSWORD’, ‘**********’);
はパスワード
*********は任意のものに変えてある
define(‘CONSUMER_KEY’, ‘********************’);
define(‘CONSUMER_SECRET’, ‘*********************************’);
これらは、
twitter のアプリの設定画面の
Details のところに載っている
define(‘SITE_URL’, ‘http://dev.dotinstall.com/tw_connect_php/’);
はサイトURL
error_reporting(E_ALL & ~E_NOTICE);
はエラー関連の表示
session_set_cookie_params(0, ‘/tw_connect_php/’);
はセッション範囲の指定

twitter アプリのためのDB作成

twitter アプリのためのDB作成
twitter アプリのユーザ情報を格納するので
DBを作成する
開発環境は Ubuntu12.04 64bit
すでに apache2 と PHP はインストール済みなので
MySQL を入れる
sudo apt-get install mysql-server
でインストールできる
install しているときに root 権限のパスワードを設定するのでパスワードを入力
この root は Ubuntu のではなくて
MySQL の root 権限
これで準備できたので
#03 データベースの設定をしよう
http://dotinstall.com/lessons/tw_connect_php_v2/21903
を参考にDBの作成
今回、アプリ作成のためディレクトリを作成
/var/www/twitter としてみた
前回ダウンロードした圧縮ファイルを
ここに解凍して置く
codebird-php-master/src/codebird.php
が使うファイルなので、
codebird.php

/var/www/twitter/
へコピーしておく
そしたら、DB の作成
動画では、PHPファイルを作成し
その中のものから コピペしているけど
sql ファイルにまとめておいて実行するということもできるので
今回はこの方法を使います
config.php のSQL部分のコピペを行い
vim setup.sql で sql ファイルを作成し
貼り付け
そのときにパスワードの
********************
を任意のパスワードに変更し保存
mysql -u root -p < setup.sql を実行すれば、sqlファイルの内容を実行することができます 作成できているか確認するには mysql -u root -p で mysql にログインして show databases; でDBを確認して dotinstall_tw_connect_php があるのを確認 そして use dotinstall_tw_connect_php で使用DBを切り替えて desc users; でテーブルの中身を確認 これでOKなら exit で mysql を抜けます

twitter でログインする webサービス

twitter でログインする webサービス
必要なものが
HTML
CSS
PHP
MySQL
Codebird-PHP
https://github.com/mynetx/codebird-php
これは ZIP ボタンをクリックして
圧縮ファイルをダウンロードして解凍して使う
必要なものができたら、次は
twitter アプリの登録
これは
https://dev.twitter.com/
へアクセスし
sign in して登録する
sign in したら、自分の twitter アイコンをクリックして
My Applications をクリックし
create a new application をクリック
必要な項目が英語だけど
name にはアプリの名前
ただし、twitter という名前をいれるのはダメ
description にはアプリの解説
web site には
自分サイトのURL
callbackURL には
自分のサイトURLに
callback.php をつければOK
規約を読んでOKなら
yes I agree にチェックをいれて
よみにくい文字を入力すれば登録完了
もし、間違えても
登録アプリの Settings タブで
修正が可能なので、そんなに失敗を気にしなくてもいい

Twitter ボット作成 その2

Twitter ボット作成
で必要なキーを取得したら
次に、サーバー側の設定を行います
今回の実験環境は ubuntu 11.10 64bit です
sudo apt-get install ruby1.8 rdoc irb rubygems1.8 libopenssl-ruby
で必要なソフトをインストールします
次に
sudo gem install twitter
を実行
ただし、ubuntu11.10 の場合、 gem 実行時にファイルがエラーになるため
修正が必要です
sudo vim /var/lib/gems/1.8/specifications/faraday-0.7.5.gemspec
を実行し
s.date = %q{2011-10-04 00:00:00.000000000Z}

s.date = %q{2011-10-04]
というように時刻を修正します
また、
vim /var/lib/gems/1.8/specifications/twitter-2.0.1.gemspec
を実行し
s.date = %q{2011-12-02 00:00:00.000000000Z}

s.date = %q{2011-12-02}
というように習性をします
vim がないなら、
gedit などでもOKですが、readonly設定なので
sudo を使って管理者権限でないと変更ができません
次に、パスを通します
echo “export PATH=/var/lib/gems/1.8/bin:\$PATH” >> ~/.bashrc
ちゃんと最終行に書き込まれているかは
vim .bashrc
でshift+g
で最終行をみれば確認できます
ほかのtail コマンドなどでも確認はできますが
パスを十したら
source .bashrc
を実行し、設定を反映します
これを行わないと、反映されませんのでご注意
次に、Ruby スクリプト作成のためのディレクトリを
midir twitter
で作成し
ここで使うスクリプトは
今回の付録に付属しているため、これをそのまま使いました
ファイル名は sp_twitter.rb となっています
このファイルへ
Consumer key
onsumer secret
Access token
Access token secret
の値を書き込みます
#認証・認可情報
CONSUMER_KEY = ”
CONSUMER_SECRET = ”
OAUTH_TOKEN = ”
OAUTH_TOKEN_SECRET = ”
となっていますので
#認証・認可情報
CONSUMER_KEY = ‘Consumer key の文字列’
CONSUMER_SECRET = ‘onsumer secret の文字列’
OAUTH_TOKEN = ‘Access tokenの文字列’
OAUTH_TOKEN_SECRET = ‘Access token secretの文字列’
というように書き込んで行きます
ただし、読み込み専用のため、書き込むには
vim の場合、最後に
:w!
とする必要があります

Twitter ボット作成

日経Linux を参考に Twitter ボットをつくってみます
自分のアカウントでつくるより、サブアカウントを取得し
それをフォローしたほうがよさそうです
すでにアカウントを取得しているなら、別のメールアドレスを作成する
必要があります
twitter のアカウントは、メールアドレスと対になっているので
同じメールアドレスでは作成できません
この場合、Gmail などでもうひとつメールアドレスを取得する必要があります
このあたりについては
twitter サブアカウント取得
というように検索するとでてきます
サブアカウント取得ですが
まず
https://twitter.com/
へアクセスし
新しいアカウントを作成します
twitterアカウントの作成については
登録から基本的の使い方まで
を参考にするとわかりやすいと思います
アカウント作成したら
開発者向けサイトへアクセスします
http://dev.twitter.com/apps/
ログイン画面になるので、
IDとパスワードを入力し、ログインします
次に、create a new application をクリックし
登録作業を開始
Name にはアプリ名(ただし人とかぶらないもの)
Description には説明文
WebSite には ウェブサイト(ただし、適当でもOKらしい?)
を入力し、アプリを作成します
続いて、権限を変更したいので
setting タブをクリックして
Application Type を
Read only から read and Write にします
なぜか、2度行わないと設定が反映されていませんでした
ここまで終わったら、Detail タブをクリックして
下のほうにある
Create my access token をクリックし
Access token

Access token secret
を取得します