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