お世話になります。
GASにてTwitterのアプリケーションを作っており、タイムラインの取得、ツイートの投稿、DMの取得をするところまではできました。
ただ、DMを送信するところで下記のエラーメッセージが出てしまい成功しません。
Exception:Exception: Request failed for https://api.twitter.com returned code 415
調べたところcallbackURLが設定できていない場合に出力されるメッセージらしいのですが、
Twitter DevelopersにてcallbackURLも正しく設定できています。
コードは以下なのですがどこかおかしいところがありますでしょうか
どなたかご存知のかたよろしくお願いいたします。
function
1 try{ 2 var service = twitter.getService(); 3 var payload = JSON.stringify({ 4 'event': { 5 'type': 'message_create', 6 'message_create': { 7 'target': { 8 'recipient_id': String(recipient_id) 9 }, 10 'message_data': {text:data} 11 } 12 } 13 }); 14 var response = service.fetch('https://api.twitter.com/1.1/direct_messages/events/new.json',{ 15 'method': 'POST', 16 'Content-Type': 'application/json', 17 'payload': payload 18 }); 19 return response; 20 }catch(e){ 21 Logger.log('Exception:'+e); 22 } 23} 24
設定した Callback URL は POST oauth/request_token の oauth_callback と一致していますか?
GASのスクリプトIDを取得し、以下形式のURLにしたものをTwitterDevelopersに設定しています。
https://script.google.com/macros/d/[スクリプトID]/usercallback
Twitterインスタンス生成は次のコードなのですがここにもrequest_tokenの設定が必要ということでしょうか?
var twitter = TwitterWebService.getInstance(
'',//API Key
''//API secret key
);
ちなみにTwitterDevelopersで見たアカウントの権限は
Read, write, and Direct Messagesになっています、DMの受信、ツイートの送信等はできるので認証はされている気がします。
私は詳しくないですが、Twitterインスタンスの生成ではAPIの利用権を得ているだけで、Twitterのユーザーとしてできることの権限を得ているわけではないと思います。今動いているのはブラウザでTwitterへのログインが済んでいるユーザーの権限なのではないでしょうか。アプリがTwitterユーザーの権限を得るにはOAuthアクセストークンが必要で、そのとき oauth_callback として渡すURLがTwitter Developersで設定したURLと一致していないと415エラーになっちゃうのかなと。
TwitterのOAuthについてはこちらにドキュメントの日本語訳がありました。
http://westplain.sakuraweb.com/translate/twitter/Documentation/OAuth/Overview.cgi
oauth_callbackは呼び出しのソースコード上では特に設定していませんでした。
様々なサイトを調べても明示的に設定しているサイトはありませんでした。
callbackURLは認証されていればよいはずみたいですが、もう少し調べてみます。
無事解決しました。callbackURLは関係ありませんでした。
Content-Typeの記述文字が誤りだったようでcontentTypeという記述の仕方でようやく解決しました。
DM受信する際はContent-Typeでもうまくいったのですが、これだけは不明です・・・
回答1件
あなたの回答
tips
プレビュー