質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

Q&A

解決済

1回答

1622閲覧

GASでTwitterのDM送信ができない

s1170022

総合スコア25

Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

0グッド

0クリップ

投稿2021/11/27 15:46

お世話になります。

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

itagagaki

2021/11/27 16:39

設定した Callback URL は POST oauth/request_token の oauth_callback と一致していますか?
s1170022

2021/11/28 04:23

GASのスクリプトIDを取得し、以下形式のURLにしたものをTwitterDevelopersに設定しています。 https://script.google.com/macros/d/[スクリプトID]/usercallback Twitterインスタンス生成は次のコードなのですがここにもrequest_tokenの設定が必要ということでしょうか? var twitter = TwitterWebService.getInstance( '',//API Key ''//API secret key );
s1170022

2021/11/28 07:53

ちなみにTwitterDevelopersで見たアカウントの権限は Read, write, and Direct Messagesになっています、DMの受信、ツイートの送信等はできるので認証はされている気がします。
itagagaki

2021/11/28 13:45

私は詳しくないですが、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
s1170022

2021/11/29 12:24

oauth_callbackは呼び出しのソースコード上では特に設定していませんでした。 様々なサイトを調べても明示的に設定しているサイトはありませんでした。 callbackURLは認証されていればよいはずみたいですが、もう少し調べてみます。
s1170022

2021/12/01 16:03

無事解決しました。callbackURLは関係ありませんでした。 Content-Typeの記述文字が誤りだったようでcontentTypeという記述の仕方でようやく解決しました。 DM受信する際はContent-Typeでもうまくいったのですが、これだけは不明です・・・
guest

回答1

0

自己解決

ヘッダ部分の"Content-Type"は間違い。
"contentType"にすることで正常にダイレクトメッセージが送信できた。

投稿2021/12/01 16:01

s1170022

総合スコア25

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問