OAuthとAPIを使うときに必要となるキーたち
前回の補足。
ID, Key
OAuthやAPIを使うために必要になるIDやKeyについて、用途と取得方法を示す。
- DocId
- ClientId
- ClientSecret
- API Key
- code
- AccessToken
6つもある。実際はアカウント情報(メールアドレス、パスワード)もログインするために必要だから8つか。
DocId
ID | 用途 |
---|---|
docid | SQL文でテーブル名として使う |
Google DriveでFusion Tablesを作成したとき、そのファイルにURLが割り当てられる。そのURL内にあるdocidパラメータの値をテーブル名として使う。
SQL文を作るときは、そのテーブルのカラム名も必要。データを追加するときは、データのフォーマットに合わせる必要がある、と思う。
OAuth2.0
入力 | 取得 |
---|---|
ClientId,ClientSecret | code |
code | AccessToken |
Google Developers Consoleの認証情報
からAPI Key
とOAuth クライアント ID
を作成する。そこで得たClientId,ClientSecret,APIKeyを使ってcodeを得る。ローカルサーバが必要で、許可
ボタンを押さねばならない。手入力が必要なところ。期限もあるらしい。いつまでかは知らない。ワンタイムパスワード的なものなのだろうか。
codeが入手できたら、AccessTokenを取得するリクエストをする。
APIを叩く
Key | 用途 |
---|---|
APIKey,AccessToken | Fusion Tables API |
APIを叩くためには、APIKeyとAccessTokenの両方が必要である。
Fusion Tables APIに触ってみたとき、APIKeyだけでできると思って叩くもLogin Required
エラーになった。あれはOAuth2.0認証しろという意味だったのだろうか。
ソースコード
AccessTokenを取得する
ソースコードを参照する。以下の部分でAccessTokenを取得している。
data = urllib.urlencode({ "code": code, "client_id": client_id, "client_secret": client_secret, "redirect_uri": redirect_uri, "grant_type": "authorization_code" }) serv_req = urllib2.Request(url="https://accounts.google.com/o/oauth2/token", data=data) serv_resp = urllib2.urlopen(serv_req) response = serv_resp.read() tokens = simplejson.loads(response) access_token = tokens["access_token"]
所感
codeの取得をすっとばして、AccessTokenを使いまわせたら、手入力を回避できそう。
そうすれば、ブラウザもローカルサーバも立ち上げる必要がなくなる。できるかどうか知らないけど。
次回、調べてみる。