[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をフォローして頂けると幸いです ^ ^。
最後までご覧頂きましてありがとうございました!