Twitter API 1.1 でエラー:Read-only application cannot POST

Twitter APIを利用して、PHPからツイートしようと思ったら、以下のエラーが返ってきました。

Read-only application cannot POST

で、Twitterアプリの管理画面の「settings」項目を確認したところ、「Application Type」が「Read only」になっていました。
そこで以下のように「「Read and Write」に変更。

キャプチャイメージ

設定が「Read only」になっていたので「Read ond Write」に変更

が、しかし。
変更後も同じエラーが返ってくるのです。設定項目はこれのことじゃないのか?

そんなときに以下の記事を発見。

Read-only application cannot POST

  1. Twitterにログインして追加したアプリケーションを削除
  2. もう一回再度登録。 ※この際に間違いなく「Read & Write」をチェックする

マジっすか。

マジでした。
あっさり解決しました。

エラー表示について以下の方法などで確認できました。(もっといい方法があるかも)
ツイートに成功していればツイート内容がjson形式で返ってきます。
json_decodevar_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);
}

なんだかスッキリ。

PHP | , , |