はてなブログを使って、早数年……
はてなのAPIを使ってみたいなぁと思い、色々していました。
ということで、はてな APIをPythonから使う目論見のため、OAuth認証を行いました!
はてなに新しいアプリケーションを登録
APIを使用するには、認証に必要な情報を取得する為に、「アプリケーション」というものを登録します。
まずはコチラにアクセス。
新しいアプリケーションの追加ボタンを押します。
こんな感じの表示がされます。
情報を入力
情報を登録していきましょう。
最低限必要なのは「アプリケーションの名称」の名称に、任意の名前を入力してください。
説明や画像は設定しなくてもOKです。
またURLは空にしても、勝手に入力し直されます。
アクセス権を変更
「承認を求める操作」という欄で、アクセス権を変更できます。
「何目的でAPIを使用するか?」に応じて、変更しましょう。
ひとまずそのままでもOKです。
登録を確定する
「現在の状態」という欄の下にある「変更ボタン」を押せば、登録完了です。
変更が正常に完了すると、「登録しました」という表示がされます。
必要な情報をメモする
アプリケーションの登録を行った画面で、必要な情報が記載されているのでメモしておきます。
この2つの欄がその項目です。
- キー
- OAuth認証URL
キーは認証に必要な情報になります。
またこのアプリケーション(API)を使用するのに必要な、秘密の情報となります。
この情報が漏洩しないように気をつけましょう。
OAuth認証URLは、認証時にアクセスするのに必要なURLです。
共通なので、下記を参照でもOKです。
項目 | URL |
---|---|
Temporary Credential Request URL | https://www.hatena.com/oauth/initiate |
Resource Owner Authorization URL (PC) | https://www.hatena.ne.jp/oauth/authorize |
Resource Owner Authorization URL (スマートフォン) | https://www.hatena.ne.jp/touch/oauth/authorize |
Resource Owner Authorization URL (携帯電話) | http://www.hatena.ne.jp/mobile/oauth/authorize |
Token Request URL | https://www.hatena.com/oauth/token |
必要ライブラリのインストール
必要なものをpipでインストールします。
この2つです。
pip install requests pip install requests_oauthlib
ソースコード
ソースの内容は、参考ページのものとほぼ同じです。
ただし参考ページは、Python2で書かれているので、一部修正が必要。
ということでPython3に対応したものがコチラ。
import urllib import webbrowser import requests from requests_oauthlib import OAuth1 API_KEY = 'OAuth Consumer Keyプライベート' SECRET_KEY = 'OAuth Consumer Secretプライベート' request_url = 'https://www.hatena.com/oauth/initiate' authorize_url = 'https://www.hatena.ne.jp/oauth/authorize' access_token_url = 'https://www.hatena.com/oauth/token' 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(urllib.parse.parse_qsl(r.text)) # User Authorization # ブラウザが開き、ユーザ許可を行う webbrowser.open('%s?oauth_token=%s&perms=delete' % (authorize_url, request_token['oauth_token'])) # ユーザ許可後に表示される、PINコードを入力する oauth_verifier = input("Please input PIN code:") 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(urllib.parse.parse_qsl(r.text)) return access_token if __name__ == '__main__': # アクセストークンを取得して、表示する print(oauth_requests())
実行してみる
ということで作成したものを実行します。
$ python requestsOauth.py Please input PIN code:
ブラウザでページが開きます。
「許可する」を押します。
すると許可した旨と、PINコードが出力されます。
このPINコードをコピーして、Pythonを実行したコンソールに貼り付けてEnterします。
$ python requestsOauth.py Please input PIN code:KKOaOZuGPYtjbJvgKcZm25ft
するとこのような結果が表示されます。
{'oauth_token': 'OAuthトークン', 'oauth_token_secret': 'OAuthトークンシークレット', 'url_name': 'liszworks', 'display_name': 'lis'}
参考
コチラを参考にしました。ありがとうございました!
あとがき
PythonではてなのAPIを使うために、OAuth認証をする方法でした!
これでフォトライフをいじったり、ブログの操作とかをできるんじゃなかろうか……