TwitterAPIを使ってみるテスト2(OAuth)

前回のエントリで、Twitterトレンド情報を取得してみました。
TwitterAPIを使ってみるテスト(by Python) « Walk on apps.

初めの一歩ということで、その時はログイン不要なAPIを利用していました。
今回は、OAuth認証してTweetしてみるテスト、を試してみます。

使っている環境:
Python2.5.4
Tweepy 1.12
Windows7(64bit)


(1)Twitterのライブラリ
Twitterのライブラリがこちらに紹介されています。
Twitter Libraries

Tweepyが太字になっているので、これがおすすめ?かと思い、使うことにした。

twitter_OAuth01
ダウンロードしたtweepy-master.zipファイルを展開すると、tweepyというディレクトリがあるのでそれをコピーして配置。
同じ場所でアプリ作成する分には、これでライブラリを読込めるので、とりあえずこのまま、インストールせずに使っていきます。


(2)TwitterのDevelopers画面で、My applicationsの作成
Twitterのツイート画面の左下のほうの、「開発者」をクリックします。
twitter_OAuth02

Developers画面で「Sign in」をクリックし、ログイン。

twitter_OAuth03

ログイン後に、My Applicationを選択。

twitter_OAuth04

Create a new applicationボタンをクリック。

twitter_OAuth05

Create an application画面で、Name, Description, Websiteを入力します。

Nameは自分のアプリ名を入力。Twitterの中で一意になる名前でないとダメみたい。

Descriptionはアプリの説明。第3者にアプリを使ってもらうときに表示される。僕の場合、練習なので、とりあえず適当に書きました。
Websiteには、アプリのサポートページとかを書いておくんだと思う。これも第3者にアプリを使ってもらうときに表示される。とりあえず自分のTwitterアカウントのURIを書いといた。

twitter_OAuth06

作成後に、Settingタブを開きます。

twitter_OAuth07

Settingタブの、Application Type設定のAccessを「Read and Write」に設定変更します。

twitter_OAuth08

次に、Detailsタブを開きます。

twitter_OAuth09

Detailsタブの中の、一番下の、Create my access tokenをクリックしaccess tokenを手動で発行します。

通常は、「OAuth認証のやり取りの中でaccess tokenが発行され、アプリ側でそれを保持しておく」といった形になるとおもうけど、今回は練習なので、手動であらかじめ発行しておくことにした。

twitter_OAuth10

そうすると、Detailsタブに、Consumer key, Consumer secret, Access token, Access token secretが表示されているはず。

twitter_OAuth11

とりあえずこれで、アプリ作成の準備が整いました。

Consumer key, Consumer secret, Access token, Access token secretは、アプリ内で設定する必要があるので、メモしておくこと。


(3)ツイートしてみる

ダウンロードしたtweepyの中にExampleがあります。その中のoauth.pyを使います。

まず、Consumer key, Consumer secret, Access token, Access token secretを設定します。
その後、コマンドプロンプトから
python oauth.py

とすると、アカウント名がプロンプトに返ってきて、終了します。

で、Twitterのアカウント画面を見ると、「Updating using OAuth authentication via Tweepy!」と、ツイートされています。

テスト中に、同じ文言でツイートしようとエラーが出て怒られるので、ツイートする文章はそのつど変えてください。

Exampleそのままだけど、ソースを載せておきます。

import tweepy

# == OAuth Authentication ==
#
# This mode of authentication is the new preferred way
# of authenticating with Twitter.

# The consumer keys can be found on your application's Details
# page located at https://dev.twitter.com/apps (under "OAuth settings")
consumer_key=""
consumer_secret=""

# The access tokens can be found on your applications's Details
# page located at https://dev.twitter.com/apps (located 
# under "Your access token")
access_token=""
access_token_secret=""

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)

api = tweepy.API(auth)

# If the authentication was successful, you should
# see the name of the account print out
print api.me().name

# If the application settings are set for "Read and Write" then
# this line should tweet out the message to your account's 
# timeline. The "Read and Write" setting is on https://dev.twitter.com/apps
api.update_status('Updating using OAuth authentication via Tweepy!')

(4)問題点

さてとりあえずOAuthは大丈夫でしたが、、
ライブラリの中をよく見てみると、どうやらTwitterAPIのVersion1.0を使っている模様。。
ためしにTwitterトレンドへのアクセスパスを見てみると、ライブラリの中で、
path = ‘/trends/{woeid}.json’

って、書かれていた。Version1.1では、
trends/place.json?id=woeid

となるはず。

そして、Version1.0は、2013年3月5日から使えなくなるみたいです。

https://dev.twitter.com/docs/api/1.1/overview

Deprecation of v1.0 of the API

Most developers won't need to do much work to transition from v1.0 to v1.1, but we want to make sure there is ample time to do so. We will be providing a 6 month window before turning off v1.0. Starting March 5th, 2013, the 1.0 endpoints will no longer be available.

ほかのライブラリを見てみたけど、まだVersion1.1には対応していないように見える。(ここ最近アップデートされていない)

で、悩んだものの、Tweepyのソースにちょこっと追加すれば、Version1.1へのアクセスできるってわかった。(3月になったら、さすがにライブラリのアップデートされるだろうし、とりあえず自分が使いたいエンドポイントはそんなに多くないので、ひとまずこれで暫定対処しようとと思う。)

次回のエントリーで、TwitterAPI Version1.1への対応を書いてみます。


追記
TwitterAPI Version1.1を使ってみました。
TwitterAPIを使ってみるテスト3(TwitterAPI Version1.1) « Walk on apps.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s