PythonでOAuth2なAPIを利用する際に、urllibとoauthlibを使った具体的な方法を説明します。今回は例としてNetatmo APIについて記述しますが、OAuth2に対応したAPIであればやり方はほとんど変わらないはずです。
まずは、必要なライブラリをインストールします。
$ pip install oauthlib
次に、認証のために必要な情報を入手します。
NETATMO_API_CLIENT_ID = 'xxxxxxxxxxxxxxxx'
NETATMO_API_CLIENT_SECRET = 'xxxxxxxxxxxxxxxx'
NETATMO_API_SCOPE = ['read_station']
NETATMO_API_REDIRECT_URL = 'http://localhost/callback'
これで認証が完了しました。次に、Access Tokenを使ってAPIにアクセスします。
GET /getmeasure にアクセスしてみる。
columns = ['temperature', 'co2', 'humidity', 'pressure', 'noise']
params = {
'date_begin': 1577836800, # 2020-01-01 00:00:00 UTC
'device_id': 'xx:xx:xx:xx:xx:xx',
'scale': '30min',
'type': ','.join(columns),
'optimize': 'false',
}
url = 'https://api.netatmo.com/api/getmeasure?' + urllib.parse.urlencode(params)
url, headers, body = oauth.add_token(url)
req = urllib.request.Request(url, headers=headers)
with urllib.request.urlopen(req) as res:
data = json.load(res)
以上の手順で、PythonでOAuth2とurllibを使ってAPIにアクセスすることができます。この記事が皆さんの参考になれば幸いです。