このブログを検索

2018/01/28

twitteroauth

twitter apiを使ったphpのソースを公開したが重要な欠陥に気づいて非公開にした。
そして修正しているうちに認証できなくなってしまった。
調べているとoauthで使用しているtwitteroauthが更新されていたので、
アップデートがてら作り直すことにした。

最新リリースを持ってくる。
https://github.com/abraham/twitteroauth/releases

0.7.4が去年の7/1にリリースされていた。

今のバージョンはなんだろうと見てみるとバージョンが書かれている場所がわからないが
ファイルのタイムスタンプが 2015 8/19なので0.5.4だ。クソ古い。

解凍の仕方も忘れている。

tar -zxvf 0.7.4.tar.gz

参考
https://qiita.com/sofpyon/items/982fe3a9ccebd8702867


自分のkeyを定義したphpファイルを作る。
common.php

これは前に作ったものをそのまま使える。

login.php

上記サイトのソースがコメントまで同じだ。
前回もこの人のを参考にしたのか?
requireのパスだけ今回のものに変える。

mypage.php
を作って動かす。

http error 500になる。

下記2行をソースの最初に書いてエラーメッセージを表示させる。

ini_set("display_errors", On);
error_reporting(E_ALL);


Notice: Undefined index: access_token in /var/www/html/ssl/bl/mypage.php on line 14 Parse error: syntax error, unexpected '[' in /var/www/html/ssl/bl/twitteroauth-0.7.4/src/TwitterOAuth.php on line 128

これはphpのバージョンが古いために出るらしい。
今のphpのバージョンは5.3.3

自動アップデート(名前は忘れた)しているがphpは上がっていない。
レポジトリを変えないとダメなようだ。

こちらを参考にphpをアップデート

https://qiita.com/ozawan/items/caf6e7ddec7c6b31f01e

バージョンを確認...... 変わってない!

apacheを再起動しないとダメだそうだ。

service httpd restart

変わった。

今度は以下のエラー。

Notice: Undefined index: access_token in /xxxx/mypage.php on line 14
object(stdClass)#3 (1) { ["errors"]=> array(1) { [0]=> object(stdClass)#7 (2) { ["message"]=> string(53) "Your credentials do not allow access to this resource" ["code"]=> int(220) } } }

twitteroauth, phpのバージョンをあげる前と同じだ。

許可されていないAPIを呼び出した時などに出るエラーのようだが、
アクセストークンを取り出しているだけだ。

APIの利用制限に引っかかったのか?