(1) Twitter APIライブラリ(Twitter4j)を用いてDMを送信する方法
(1-1) 構文
(1-2) 開発者用アカウントの設定変更
(1-3) 認証トークンの再生成
(1-4) サンプルプログラム
(1) Twitter APIライブラリ(Twitter4j)を用いてDMを送信する方法
(1-1) 構文
DMを送信するにはTwitter4jのDirectMessageクラスのsendDirectMessageクラスを使います。
- DirectMessage dm = twitter.sendDirectMessage(reciever, message);
sendDirectMessageクラスの引数は次の通りです。
reciever | DM受信者を指定します。long型(ID)とString型(ユーザーID)の2パターンの指定が可能です。
①long型の場合 ②String型の場合 |
message | String型で相手に送るメッセージを指定します。 |
(1-2) 開発者用アカウントの設定変更
開発者用アカウントの設定によっては、次のようなエラーが出る事があり、このメッセージが出た場合はアカウントの設定変更が必要となります。
●エラーメッセージ
- #### DM送信処理開始 ####
- 403:The request is understood, but it has been refused. An accompanying error message will explain why. This code is used when requests are being denied due to update limits (https://support.twitter.com/articles/15364-about-twitter-limits-update-api-dm-and-following).
- message - This application is not allowed to access or delete your direct messages.
- code - 93
- Relevant discussions can be found on the Internet at:
- http://www.google.co.jp/search?q=796590e6 or
- http://www.google.co.jp/search?q=802fbd73
- TwitterException{exceptionCode=[796590e6-802fbd73], statusCode=403, message=This application is not allowed to access or delete your direct messages., code=93, retryAfter=-1, rateLimitStatus=null, version=4.0.7}#### フォロに失敗しました: 403:The request is understood, but it has been refused. An accompanying error message will explain why. This code is used when requests are being denied due to update limits (https://support.twitter.com/articles/15364-about-twitter-limits-update-api-dm-and-following).
- message - This application is not allowed to access or delete your direct messages.
- code - 93
- at twitter4j.HttpClientImpl.handleRequest(HttpClientImpl.java:170)
- at twitter4j.HttpClientBase.request(HttpClientBase.java:57)
- at twitter4j.HttpClientBase.post(HttpClientBase.java:86)
- at twitter4j.TwitterImpl.post(TwitterImpl.java:2138)
- at twitter4j.TwitterImpl.sendDirectMessage(TwitterImpl.java:577)
- at twitter4j.TwitterImpl.sendDirectMessage(TwitterImpl.java:611)
- at twitter4j.TwitterImpl.sendDirectMessage(TwitterImpl.java:616)
- at twitterapi_test.SendDirectMessage.main(SendDirectMessage.java:36)
(図121)
●原因
エラーコード93を調べるとTwitterの公式ページにも原因の説明が書かれています。

●対処





(1-3) 認証トークンの再生成




(1-4) サンプルプログラム
上記の設定変更が出来たら、次のサンプルが実行できずはずです。
(サンプルプログラム)
- import twitter.CommonUtil;
- import twitter4j.DirectMessage;
- import twitter4j.Twitter;
- import twitter4j.TwitterException;
- import twitter4j.TwitterFactory;
- import twitter4j.User;
- import twitter4j.conf.ConfigurationBuilder;
- public class SendDirectMessage {
- public static void main(String[] args) {
- //#### (事前準備)設定の取り込み (ConfigurationBuilderクラス)
- //# インスタンス生成
- ConfigurationBuilder cb = new ConfigurationBuilder();
- //# キー情報の設定
- cb.setDebugEnabled(true)
- .setOAuthConsumerKey(“[ご自身のConsumerKey]”)
- .setOAuthConsumerSecret(“[ご自身のConsumerSecret]”)
- .setOAuthAccessToken(“[ご自身のAccessToken]”)
- .setOAuthAccessTokenSecret(“[ご自身のAccessTokenSecret]”);
- //# 送信する相手
- String reciever = "[受信者のユーザーID]";
- //# 送信するメッセージ
- String message = "ここにメッセージを入力します";
- try {
- //#### (事前準備)各種Twitterインスタンスの生成
- //# ファクトリクラスのインスタンス生成
- TwitterFactory tf = new TwitterFactory(cb.build());
- //# Twitterクラスのインスタンス生成
- Twitter twitter = tf.getInstance();
- //#### ①フォローターゲットの対象を格納するオブジェクト
- System.out.println("#### DM送信処理開始 ####");
- DirectMessage dm = twitter.sendDirectMessage(reciever, message);
- System.out.println("#### DM送信処理終了 ####");
- System.exit(0);
- } catch (TwitterException e) {
- e.printStackTrace();
- System.out.println("#### DM送信に失敗しました: " + e.getMessage());
- System.exit(-1);
- }
- }
- }
(図141)