Tag: Twitter TwitterAPI OAuth

目次

参考情報

基本の流れ

  • Twitterにアプリケーション登録を登録し、Consumer Key と Consumer Secret を取得。
  • Access TokenとAccess Token Secretを取得する。以下のどちらかの方法を使う。
    • 認証用URLを自前で用意しユーザーがログオン。コールバックで取得。…めんどくさい。
    • Twitterの認証画面を表示。PIN番号が表示されるのでそれを入れてもらう。…簡単。
  • Consumer Key / Consumer Secret / Access Token / Access Token Secretを使ってAPIを使う。

Twitterにアプリケーション登録

  • Twitterに自分のアカウントでログオン。http://twitter.com/
  • https://twitter.com/apps→新しいアプリケーションを追加。
  • アプリケーション登録申請を行う(あとから変更可能)。
    項目必須説明
    アプリケーションのアイコン×認証時に表示される?
    アプリケーション名tweetのfrom XXXのXXXの部分に使われる。
    アプリケーションの説明適当
    アプリケーションのウェブサイトURLアプリケーション名からリンクが張られる?
    所属会社/団体×適当
    サイト×適当
    アプリケーションの種類クライアントはbotやその他の用途。ブラウザアプリケーションはWebアプリ。
    コールバックURL×ブラウザアプリのときだけ入力
    Default Access typeつぶやきたいときは、Read & Write。表示だけの場合は、Read-only
    Use Twitter for login×不明
  • 登録が完了するとConsumer keyとConsumer secretが表示されるのでメモっておく。

iOSで認証(2012/07/23(月): 追記)

Access TokenとAccess Token Secretを取得する(PINベース)

  • BOTのように一つのアカウントに関連づけられるクライアントアプリケーションの場合、PINベース認証でAccess TokenとAccess Token Secretを取得して保存するだけでOK。
  • ブラウザで認証画面を表示する前に関連づけたいアカウントであらかじめログオンしておくと間違えない。

Javaで実装

[ヅラド] Twitter4Jを使ったTwitterのOAuth認可サンプルを参考にさせていただく。

public class TwitterOAuthAccessTokenGetter {

    public static void main(String[] args) throws Exception {

        //Twitterにアプリケーションを登録したときに表示されるConsumerKey ConsumerSecretをセットする。
        String consumerKey = "XXXXXXXXXXXXX";
        String consumerSecret = "YYYYYYYYYYYYY";

        //認証用URLが表示されるのでブラウザでアクセスし表示されるPINコードを読み込む。
        //アカウントが複数ある場合あらかじめ関連づけたいアカウントでログオンしておくと良い
        TwitterFactory factory = new TwitterFactory();
        Twitter twitter = factory.getOAuthAuthorizedInstance(consumerKey,
                consumerSecret);
        RequestToken requestToken = twitter.getOAuthRequestToken();
        String authorizationURL = requestToken.getAuthorizationURL();
        System.out.println(authorizationURL + " にウェブブラウザでアクセスして認証を許可してください。");
        System.out.println("認証を許可したらウェブブラウザにPINコードが表示されます。");
        System.out.println("PINコードを入力して[Enter]キーを押してください。");
        BufferedReader r = new BufferedReader(new InputStreamReader(System.in));
        String pin = r.readLine();
        AccessToken accessToken;
        if (pin.length() > 0) {
            accessToken = twitter.getOAuthAccessToken(requestToken, pin);
        } else {
            accessToken = twitter.getOAuthAccessToken();
        }

        //AccessToken AccessTokenSecretを表示。アプリケーションでこれを使う。
        int userId = twitter.verifyCredentials().getId();
        String token = accessToken.getToken();
        String tokenSecret = accessToken.getTokenSecret();
        System.out.println("UserId=" + userId);
        System.out.println("Token=" + token);
        System.out.println("TokenSecret=" + tokenSecret);
    }
}

Rubyで実装

あらかじめoauthライブラリはインストールしておく。

sudo gems install oauth

使い方はJava版と同じ。

require 'rubygems'
require 'oauth'

CONSUMER_KEY = 'XXXXXXXXX'
CONSUMER_SECRET = 'YYYYYYY'

consumer = OAuth::Consumer.new(CONSUMER_KEY, CONSUMER_SECRET, :site=>'http://tw\
itter.com')

request_token = consumer.get_request_token
print "次のURLにアクセスしてください: #{request_token.authorize_url}\n"
print "PINコードを入力して[ENTER]を押してださい\n"
pin = STDIN.gets.chomp
print "PIN CODE=#{pin}\n"

access_token = request_token.get_access_token(:oauth_token => request_token.tok\
en, :oauth_verifier => pin)

print "Token=#{access_token.token}\n"
print "Secret=#{access_token.secret}\n"

src256/ruby-twitter-oauth: Twitter OAuthを作成した。

トラブルシューティング

認証ページでエラー(おっと…)

意味不明な以下のメッセージが表示された場合、認証用のURLのコピペ間違いなどが考えられる(MacのターミナルからURLをコピーしようとしたとい、折り返し部分にバックスラッシュが含まれていてこのメッセージが表示されたことがあった)。

おっと!このページはもう有効ではありません。あなたと同じトークン情報を誰かがすでに利用してしまったようです。元のサイトに戻ってもう一度試してみてください。たぶん単純なミスでしょう。

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-05-11 (木) 22:14:35