LoginSignup
1
0

More than 3 years have passed since last update.

gmusicapiの認証サンプル

Posted at

完全に自分用の技術メモ(´・ω・`)

gmusicapiはPythonからGoogle Play Musicを操作するGoogle非公認のライブラリです。Google Play Musicを操作するにあたっては認証が不可欠なのですが、その認証APIがやや複雑というか、少なくとも自分は時間を溶かしたので、サンプルを供養がてらQiitaに残しておきたいと思います。ちなみに稼働を確認した環境については、Pythonのバージョンは3.7、gmusicapiのバージョンは12.1.1になります。

import gmusicapi

# 前提: このファイルは初回起動時には存在しない。
CREDENTIAL_FILE = '/path/to/mobileclient.cred'

api = gmusicapi.Mobileclient()
if not os.path.exists(CREDENTIAL_FILE):
    api.perform_oauth(CREDENTIAL_FILE)
api.oauth_login(gmusicapi.Mobileclient.FROM_MAC_ADDRESS, CREDENTIAL_FILE)

初回起動時に必要な作業について

初回起動時、すなわちCREDENTIAL_FILEが存在しない場合、次のようなメッセージがコンソール(標準出力)に表示されると思います (セキュリティ上の関係から、一部マスキングしています)

Visit the following url:
 https://accounts.google.com/o/oauth2/v2/auth?client_id=XXX&redirect_uri=XXX&scope=XXX&access_type=offline&response_type=code
Follow the prompts, then paste the auth code here and hit enter: 

このURLではアクセスコードの発行を行います。ブラウザを起動し、処理を進めていくと、最終的に以下のような画面でアクセスコードが発行されます。このトークン文字列をコピーして、先ほどのコンソールに入力すると、処理が先に進んでいくはずです。

image.png

解説

初回起動時、つまりCREDENTIAL_FILEが存在しない状態で、サンプルを実行すると、api.perform_oauthが実行されます。上記の対話型メッセージを出力しているのがこのAPIで、標準入力経由でアクセスコードを受け取ると、第1引数のファイル(ここではCREDENTIAL_FILE)に情報を記録します。

api.oauth_loginは第2引数のファイル(ここではCREDENTIAL_FILE)から情報を受け取り、認証を実施します。初回起動以降、つまりCREDENTIAL_FILEが存在する状態では、api.perform_oauthは実行されず、api.oauth_loginが直接実行されますが、認証情報は初回起動時にCREDENTIAL_FILEに記録済み。したがって、初回起動以降は、上述したようなブラウザ作業を実施する必要はありません。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0