Python + FlaskでTumblrのOAuth認証まで
ライブラリを使うだけの話です。
環境 + ライブラリ
- Ubuntu
- Python 2.7.6
- Flask 0.12.1
- Flask-OAuth 0.12
- tumblpy
Python 3.x だと Flask-OAuth でエラーが出て使えなかった。
アプリケーションの登録
今回は Callback URL を http://127.0.0.1:5000/callback
と設定する。 ConsumerKey と ConsumerSecret を保存しておく。
ソース
# -*- coding: utf-8 -*- # oauth.py import os from flask import Flask, session, redirect, url_for, request, flash from flask_oauth import OAuth from tumblpy import Tumblpy app = Flask(__name__) app.secret_key = os.urandom(24) oauth = OAuth() CONSUMER_KEY = "<your consumer key>" CONSUMER_SECRET = "<your consumer secret>" BASE_URL = "https://api.tumblr.com/v2/" REQUEST_TOKEN_URL = "https://www.tumblr.com/oauth/request_token" ACCESS_TOKEN_URL = "https://www.tumblr.com/oauth/access_token" AUTHORIZE_URL = "https://www.tumblr.com/oauth/authorize" tumblr_app = oauth.remote_app('tumblr', base_url=BASE_URL, request_token_url=REQUEST_TOKEN_URL, access_token_url=ACCESS_TOKEN_URL, authorize_url=AUTHORIZE_URL, consumer_key=CONSUMER_KEY, consumer_secret=CONSUMER_SECRET ) @tumblr_app.tokengetter def get_tumblr_token(token=None): return session.get("request_token") @app.route("/login") def login(): return tumblr_app.authorize(callback=url_for("callback", next=request.args.get("next") or request.referrer or None)) @app.route("/callback") @tumblr_app.authorized_handler def callback(resp): """ callback されたときに実行される """ next_url = request.args.get("next") or url_for("index") if resp is None: flash(u"You denied the request to sign in.") return redirect(next_url) # session を保存 session["request_token"] = ( resp["oauth_token"], resp["oauth_token_secret"] ) # とりあえず index にリダイレクトする return redirect(next_url) @app.route("/") def index(): # session があれば表示する if "request_token" in session: request_token = session["request_token"] t = Tumblpy(CONSUMER_KEY, CONSUMER_SECRET, request_token[0], request_token[1]) user_info = t.post('user/info') print user_info return "login was successful" return "index" app.run()
python oauth.py
実行後に http://127.0.0.1:5000/login にアクセスすると認証画面が出てくる。 OK すると index に飛ばされ、"login was successful" と表示される。
ここまでできていれば、コンソールに tumblr アカウントの情報が出力される。
その他
はじめはエラーで悩んでいたけどライブラリが python3 に対応してないのが原因だった。python だとバージョン間の違いが顕著に出てくるから注意(まあ他の言語でも言えそう…)。
Web も Flask も初心者だけど、簡単な web アプリなら作れそうだと思った。もしくは作れないか、どっちかです。
参考
Tumblr APIでwebサービスを作りたい全ての人に向けて書きました
Tumblr API OAuth認証の方法(PHPサンプル付き) - Qiita
ななかさんの印税生活入門 (1) (まんがタイムKRコミックス)
- 作者: kashmir
- 出版社/メーカー: 芳文社
- 発売日: 2017/02/27
- メディア: コミック
- この商品を含むブログ (4件) を見る