Twitter APIを利用して、PHPからツイートしようと思ったら、以下のエラーが返ってきました。
Read-only application cannot POST
で、Twitterアプリの管理画面の「settings」項目を確認したところ、「Application Type」が「Read only」になっていました。
そこで以下のように「「Read and Write」に変更。
が、しかし。
変更後も同じエラーが返ってくるのです。設定項目はこれのことじゃないのか?
そんなときに以下の記事を発見。
Read-only application cannot POST
- Twitterにログインして追加したアプリケーションを削除
- もう一回再度登録。 ※この際に間違いなく「Read & Write」をチェックする
マジっすか。
マジでした。
あっさり解決しました。
エラー表示について以下の方法などで確認できました。(もっといい方法があるかも)
ツイートに成功していればツイート内容がjson形式で返ってきます。
json_decode
→var_dump
です。
//twitteroauthを使っている場合 $Obj = new TwitterOAuth(・・・); ・・・ $req = $Obj->oAuthRequest('https://api.twitter.com/1.1/statuses/update.json', 'POST', [parameters]); $result = json_decode($req); var_dump($result);
2013/11/7追記
こんな記事に出会いました。
PHP – TwitterOAuthの正しい使い方 – Qiita [キータ]
// TwitterOAuth
require_once(‘path/to/twitteroauth.php’);
$TwitterOAuth = new TwitterOAuth(‘コンシューマキー’, ‘コンシューマシークレット’, ‘アクセストークン’, ‘アクセスシークレット’);
// つぶやく
$status = $TwitterOAuth->post(‘statuses/update’, [‘status’ =>’ツイート内容’]);
勉強になりました。
oAuthRequest
ではなくpost
を使うと。こちらを参考にしていきたいと思います。
さっそく、新しく学んだ方法でjson形式の返り値を確認しようと思ったら、なんと、oAuthRequest
では返り値の確認にjson_decode()
をあとから別途実行したのですが、post
では内部でjson_decode()
までしてくれています。(参照ページをよく読めば、下の方に書いてありましたが…)こっちの方が断然イイですね。
$parameters = array(); $parameters['status'] = "ツイート内容"; $Obj = new TwitterOAuth(・・・); ・・・ $req = $Obj->post('/statuses/update', $parameters); if($req){ var_dump($req); }
なんだかスッキリ。