requestsとrequests_oauthlibを使ってFlickrにOAuth認証を簡単に行う
「requestsを使ってWebAPIをたたく 例題:Flickr」でFlickrのWebAPIのたたいたが、実際には自分のアカウント内のプライペート写真にアクセスしたいことが多い。
そこでOAuth認証を使いアカウントにアクセス可能にする方法を示す。
##install
PyPiに登録されているのでpipまたはeasy_installを使ってインストール
$ pip install requests requests_oauthlib
##API keyの取得
Flickrのアカウントを持っていない場合は必要に応じて取得する。
下記のアドレスにアクセスしアプリケーションの登録を行いAPI KeyとSECRETを入手する。非商用ならNon-Commercialで登録する。
https://www.flickr.com/services/apps/create/apply/
##OAuth認証
###サンプルコード
FlickrのOAuthの手順については公式サイトに説明がある。今回はFlickrを対象としているが、基本的にOAuth1であれば同じ手順のはず。
Flickr:User Authentication
import urlparse
import webbrowser
import requests
from requests_oauthlib import OAuth1
API_KEY = 'YOUR_API_KEY'
SECRET_KEY = 'YOUR_SECRET_KEY'
request_url = 'https://www.flickr.com/services/oauth/request_token'
authorize_url = 'https://www.flickr.com/services/oauth/authorize'
access_token_url = 'https://www.flickr.com/services/oauth/access_token'
access_url = 'https://api.flickr.com/services/rest/'
callback_uri = 'oob'
def oauth_requests():
# Get request token
auth = OAuth1(API_KEY, SECRET_KEY, callback_uri=callback_uri)
r = requests.post(request_url, auth=auth)
request_token = dict(urlparse.parse_qsl(r.text))
# Getting the User Authorization
webbrowser.open('%s?oauth_token=%s&perms=delete' % (authorize_url, request_token['oauth_token'])) # ブラウザを開きOAuth認証確認画面を表示 ユーザーが許可するとPINコードが表示される
oauth_verifier = raw_input("Please input PIN code:") # 上記PINコードを入力する
auth = OAuth1(
API_KEY,
SECRET_KEY,
request_token['oauth_token'],
request_token['oauth_token_secret'],
verifier=oauth_verifier)
r = requests.post(access_token_url, auth=auth)
access_token = dict(urlparse.parse_qsl(r.text))
return access_token
if __name__ == '__main__':
print oauth_requests()
これによりAccess tokenおよびAccess token secretが取得でき、以後これを用いることでユーザーのアカウントにアクセスすることができるはず。
認証後のAPIの仕様に関してはまた別の機会に…
##参考