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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Twitter

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Express

ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。

Q&A

解決済

1回答

1505閲覧

【Twitter API】DM送信時に認証エラーとなる

nekoniki

総合スコア2409

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Twitter

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Express

ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。

0グッド

0クリップ

投稿2019/06/10 08:24

前提・実現したいこと

お世話になります。
Node.js + ExpressにてTwitter APIを使用しているのですが、
ダイレクトメッセージ送付("direct_messages/events/new")時のみ認証エラーとなってしまいます。

恐らくコード内で認証に関する記述が不足している故のエラーだと思いますが、
ご教示いただけましたら幸いです。

発生している問題・エラーメッセージ

{code:32 message: 'Could not authenticate you.'}

該当のソースコード

json

1/*twitterSecret.json*/ 2{ 3 "consumer_key": "xxxxxxxxxxxxxxxxxxxxxx", 4 "consumer_secret": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 5 "access_token_key": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 6 "access_token_secret": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 7}

Javascript

1var twitter = require('twitter'); 2var fs = require('fs'); 3 4/* 略 */ 5 6const secret = JSON.parse(fs.readFileSync("twitterSecret.json","utf-8")); 7const client = new twitter(secret); 8 9const params = { 10 event: { 11 type: "message_create" 12 , message_create: { 13 target: { 14 //※下記のどちらの指定方法も試してみましたが結果は同じでした 15 recipient_id: "xxxxxxxxxxxx" 16 // screen_name: "xxxxxxxxxxx" 17 } 18 , message_data: { 19 text: "test" 20 } 21 } 22 } 23}; 24 25client.post("direct_messages/events/new", params, function(error, data, response){ 26 if(!error){ 27 console.log("成功!"); 28 } 29 else { 30 console.log("失敗"); 31 console.log(error); 32 } 33}); 34

試したこと

  • 同じトークンで他のエンドポイント("direct_messages/events/list", "statuses/update"等)を実行してみましたが、問題なく動作したため、トークンが間違っているということはなさそうです。
  • TwitterからAPIを経由せずに対象となるIDにDMの送信ができていたので、DMの送信ができないわけでもなさそうです。

補足情報(FW/ツールのバージョンなど)

Node.js : 8.10.0
Express : 4.16.1

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

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

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

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

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

guest

回答1

0

自己解決

Gitのissueにも同様の事象が挙がっていました。
Direct Message not working #318

上記のissueにはまだ回答が付いておりませんが、調査したところ下記のような情報に行きつきました。
Twitterの古いダイレクトメッセージAPIは2018年6月に廃止らしい

それによると、どうやらTwitter APIの仕様変更に伴い、未対応のライブラリだと標題のエラーが返ってきてしまうようです。
不本意ではありますが、使用ライブラリを変更することで解決できました。

投稿2019/06/11 01:53

nekoniki

総合スコア2409

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問