目的
今回の記事で実現したいことは以下の通りです。
- Twitter API利用準備
- Twitter APIを使ってIT勉強会に関する記事を取得
Twitter API利用準備
Twitter APIを利用する為に必要となる情報
Twitter APIを利用するには以下の4つの情報が必要になる
- Consumer Key
- Consumer Secret
- Access Token
- Access Token Secret
まずは上記を取得する
Twitterの開発者向けサイトにログイン
ここにアクセスし、右上の「Sign in」をクリック
※既にTwitterにログイン済の場合はログインは不要です。
Twitterのアカウントとパスワードでログイン
Twitter Applicationを作成
Twitter Application作成画面が開くので、「Create New App」ボタンをクリック
必要項目を入力して、「Create your Twitter application」をクリック
※今回は以下の値を入力します。
入力項目 | 入力値 | 備考 |
---|---|---|
Name | IT勉強会情報取得 | 作成するアプリケーションの名前を入力 |
Description | TwitterからIT勉強会情報を取得するアプリ | 作成するアプリケーションの詳細を入力 |
Website | https://twitter.com/ユーザID | 本来はアプリケーションのURLを設定するとこですが、まだURL等は存在しないので、TwitterユーザURLを設定(ユーザIDは自身のTwitterユーザIDを設定) |
Callback URL | (空白) | ユーザ認証後のCallback URLを設定するところですが、空白でもOK |
注)この段階でTwitterアカウントに電話番号が設定されていなければエラーになります。電話番号を設定
Consumer Key、Consumer Secretの確認
「Keys and Access Tokens」タブをクリックすると「Consumer Key」「Consumer Secret」が確認できるので、どこかにメモっておく
「Access Token」「Access Token Secret」の取得、確認
「Create my access token」ボタンをクリック
「Access Token」「Access Token Secret」が確認できるので、どこかにメモっておく
注)画面上部に「Error」が表示されるが、無視してOK
これでTwitter APIを利用する為の準備は完了
Twitter APIを使ってIT勉強会に関する記事を取得
環境情報
タイトル | 内容 | 備考 |
---|---|---|
OS | macOS High Sierra バージョン 10.13.2 | とりあえずは自分のマシンで実行 |
言語 | Python 2.7.10 | とりあえず使ってみたかったpythonで、macにデフォルトで入っていた2.7.10を利用 |
ライブラリ | requests | Rest API操作を簡単にするライブラリ |
ライブラリ | requests-oauthlib | OAuth認証を簡単にするライブラリ |
pipインストール
ライブラリを簡単にインストールする為に「pip」をインストール
command
sudo easy_install pip
バージョン確認
command
$ pip -V pip 9.0.1 from /Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg (python 2.7)
ライブラリインストール
command
$ sudo pip install requests requests-oauthlib
ディレクトリ構成
tree
. ├── config.py #各種キー管理 ├── myTimeline.py #自分のタイムラインを取得 └── getStudyEventInfo.py #勉強会情報取得
各種キーは別ファイルに格納
config.py
CONSUMER_KEY = "**********" CONSUMER_SECRET = "**********" ACCESS_TOKEN = "**********" ACCESS_TOKEN_SECRET = "**********"
自分のタイムラインを取得
まずは各種キーが正しく取得できているかどうかを試すために自分のタイムラインを取得してみた
myTimeline.py
# -*- coding:utf-8 -*- import json import config from requests_oauthlib import OAuth1Session CK = config.CONSUMER_KEY CS = config.CONSUMER_SECRET AT = config.ACCESS_TOKEN ATS = config.ACCESS_TOKEN_SECRET twitter = OAuth1Session(CK, CS, AT, ATS) #Twitter認証 url = "https://api.twitter.com/1.1/statuses/user_timeline.json" #エンドポイント params ={'count' : 3} #タイムライン取得数 res = twitter.get(url, params = params) if res.status_code == 200: #OKの場合 tweets = json.loads(res.text) #タイムラインリスト取得 for tweet in tweets: #タイムラインリストをループ処理 print('name : ' + tweet['user']['name']) print('text : ' + tweet['text']) print('created_at: ' + tweet['created_at']) print('*******************************************') else: #NGの場合 print("Failed: %d" % res.status_code)
実行コマンド
command
$ python myTimeline.py
Twitter上のIT勉強会情報を取得
次はTwitter上のIT勉強会情報を取得するPGを作成
getStudyEventInfo.py
# -*- coding:utf-8 -*- import json import config from requests_oauthlib import OAuth1Session CK = config.CONSUMER_KEY CS = config.CONSUMER_SECRET AT = config.ACCESS_TOKEN ATS = config.ACCESS_TOKEN_SECRET twitter = OAuth1Session(CK, CS, AT, ATS) #Twitter認証 url = "https://api.twitter.com/1.1/search/tweets.json" params = {'q' : 'IT勉強会', 'count' : 3} req = twitter.get(url, params = params) if req.status_code == 200: tweets = json.loads(req.text) for tweet in tweets['statuses']: print('name: ' + tweet['user']['name']) print('text: ' + tweet['text']) print('created_at: ' + tweet['created_at']) print('----------------------------------------------------') else: print("ERROR: %d" % req.status_code)
実行コマンド
command
$ python getStudyEventInfo.py
Twitter APIを使う上での注意事項
Twitter APIを使う上での注意事項をまとめておきます。
APIを使う上で制限がある
Twitter APIには制限があります。制限を意識せずに開発してしまうと、エラー発生原因がわからずハマってしまうことがあるの注意が必要
- 利用したい機能(エンドポイント)毎に制限が異なる
- 15分間に~~回利用可能といった感じ
- 詳細はここ
- 投稿時には短い間隔で同じ文字列をツイートすると無視されます
アプリケーションはデベロッパーポリシーを守って利用しましょう。
ごく最近、有名なTwitterを利用したサービスが相次いで利用不可能状態になってしまいました。デベロッパーポリシーを守っていないと判断された為にアカウントを凍結されていたようです。ポリシーの内容もポリシー遵守の厳しさも随時変化していくので注意が必要
- 複数のTwitter Applicationを作成して同一サービスの為に利用することはできない
- 開発、ステージング、本番用のTwitter Applicationは特別に許可される(ただし、「1つのTwitterアカウントから申請」「アプリの名称と内容を明示するとともに、同一サービスに対する開発、ステージング、および本番環境作成である旨も明示」という条件有)
- これを守らないといきなりアカウント凍結とかになって、数週間単位でサービスがとまってしまう
- 詳細はここ
- もちろんここも遵守しましょう
複数人で開発する時の注意点
最初は1人で開発していて、サービスが大きくなったら複数人での開発に移行することがあるかと思います。その場合は以下を注意しましょう。
- 「Twitter Application」「Access Token」の権限は適切に絞る
- 各種キーがわかると対象アカウントに対してなんでもできるようになるので、厳重な管理を心がける
- 複数人でやると決まった時点で専用アカウントを準備し、開発者アカウントとは切り離す