(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)
