[Python] Google各種サービスのAPIの認証方法(v.2)
こんにちは、@yoheiMuneです。
Googleの各種サービスをAPI経由で利用する場合の、認証方法がv2から変わったみたいなので、それをブログに書きたいと思います。
なお、Google Developer本家の説明は以下のページです。こちらでは
https://developers.google.com/identity/protocols/OAuth2ServiceAccount#authorizingrequests
[Python] Google AnalyticsをAPI経由で使う
[Python] Google SpreadSheetをAPI経由で読み書きする
最後になりますが本ブログでは、フロントエンド・Python・機械学習など雑多に情報発信をしていきます。自分の第2の脳にすべく、情報をブログに貯めています。気になった方は、本ブログのRSSやTwitterをフォローして頂けると幸いです ^ ^。
最後までご覧頂きましてありがとうございました!
Googleの各種サービスをAPI経由で利用する場合の、認証方法がv2から変わったみたいなので、それをブログに書きたいと思います。
新しい認証方法の実装
Googleの各種サービスをサービスアカウントで使う場合に、oauth2clientライブラリのSignedJwtAssertionCredentialsで認証周りを実装していましたが、該当ライブラリのversion2からはSignedJwtAssertionCredentialsがなくなっちゃったようです。代わりに以下のように実装します(以下の例はGoogle Analyticsですが、認証周りは他サービスも一緒です)。
from oauth2client.service_account import ServiceAccountCredentials
from httplib2 import Http
scopes = ["https://www.googleapis.com/auth/analytics.readonly"]
json_file = "client_secret.json"
credentials = ServiceAccountCredentials.from_json_keyfile_name(json_file, scopes=scopes)
http_auth = credentials.authorize(Http())
service = apiclient.discovery.build("analytics", "v3", http=http_auth)
ここでのポイントはServiceAccountCredentialsを使うところです。このクラスを使って、各サービスへアクセスできるservice変数を生成します。上記はGoogle Analyticsの利用ですが、スコープやサービスの指定を変えることで、他のGoogleサービスも同様に認証できます。なお、Google Developer本家の説明は以下のページです。こちらでは
p12ファイルでの認証方法の実装も載っています。https://developers.google.com/identity/protocols/OAuth2ServiceAccount#authorizingrequests
関連情報
GoogleサービスのAPI利用については、以下でブログを書いています。参考になれば幸いです。[Python] Google AnalyticsをAPI経由で使う
[Python] Google SpreadSheetをAPI経由で読み書きする
最後に
今回はGoogleサービスのAPI利用時の認証方法についてブログを書きました。実装当時はv2が出たばかりかなかなか情報を見つけられず苦労しました(自分の検索力の問題か)。今後の自分の実装のため、他の方の実装のために少しでも役立てればと思います。最後になりますが本ブログでは、フロントエンド・Python・機械学習など雑多に情報発信をしていきます。自分の第2の脳にすべく、情報をブログに貯めています。気になった方は、本ブログのRSSやTwitterをフォローして頂けると幸いです ^ ^。
最後までご覧頂きましてありがとうございました!






