読者です 読者をやめる 読者になる 読者になる

やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

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 KeyOAuth クライアント 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を使いまわせたら、手入力を回避できそう。

そうすれば、ブラウザもローカルサーバも立ち上げる必要がなくなる。できるかどうか知らないけど。

次回、調べてみる。