Help us understand the problem. What is going on with this article?

requestsを使ったOAuth認証 例題:Flickr

More than 5 years have passed since last update.

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の仕様に関してはまた別の機会に…

参考

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした