Google

下位ページ

Content

Google関連

  • Google Apps Script (GAS)
  • Google App Engine (GAE)
  • Google Calendar, Gmail, ...

#lsd2

APIの使用

  1. Developer Projectを作成する
  2. プロジェクトページでAPIの使用を有効にする
  3. client id をもらう
    • リダイレクト先や、javascriptでの呼び出し先(クロスドメインの話のため?)
    • 登録したら ID と シークレットキーをもらう

初回の承認フロー



  1. Google ドライブがユーザーに OAuth ダイアログを表示し、データをリクエストしているアプリケーションを承認するよう求めます。
  2. ユーザーが承認すると、そのユーザーはアプリケーションの URL にリダイレクトされ、URL の code パラメータにある承認コードが提供されます。
  3. アプリケーションが認証情報と引き換えに承認コードを渡します。この情報には、アクセス トークンと有効期間が長いリフレッシュ トークンが含まれます。
  4. アプリケーションが User Info サービスを呼び出して、ID とメールを取得します。ID は有効期間の長いリフレッシュ トークンを保存するためのメイン キーとして使用されます。
  5. アプリケーションが、後でアクセス トークンを取得できるように、リフレッシュ トークンとメールをユーザー ID でインデックス付けして保存します。

Authorization CodeをもらうためのURL


保存されている認証情報で承認する


初回の承認フローが正常に終了した後でユーザーがアプリケーションにアクセスした場合、エンドユーザーにメッセージは表示されません。アプリケーションは、保存されているリフレッシュ トークンを使用してリクエストを承認できます。

アプリは、データベースからリフレッシュ トークンを探し出してサーバー側のセッションに保存できます。アクセス トークンが期限切れになると、このリフレッシュ トークンを再使用して新しいアクセス トークンをリクエストします。

アプリケーションが Google ドライブ ファイルへアクセスすることをユーザーが既に承認している場合の承認フローは、次のようになります:

  1. ブラウザがアプリケーションの URL にリダイレクトされ、URL の code パラメータにある承認コードが提供されます。
  2. アプリケーションが認証情報と引き合えに承認コードを渡します。ユーザーは既にアクセスを承認しているので、リフレッシュ トークンは返されません。返されるのは、有効期間が短いアクセス トークンのみです。
  3. アプリケーションが User Info サービスを呼び出して、有効期間が長いリフレッシュ トークンを探す場合にマスター キーとして使用するユーザー ID を取得します。
  4. アプリケーションがデータベースからリフレッシュ トークンを取得し、そのトークンをサーバー側のセッションに保存します。リフレッシュ トークンが取り消されたり無効になったりした場合は、これを検出し、適切な措置を取る必要があります。詳しくは、こちらをご覧ください。


GoogleAuthorizationCodeFlow

  • エンドユーザーの証明書を操作、保持する
This is designed to simplify the flow in which an end-user authorizes the application to access their protected data, and then the application has access to their data based on an access token and a refresh token to refresh that access token when it expires.

  1. ユーザーがすでに証明書を持っているか、チェックする
  2. 持っていない場合はnewAuthorizationUrl()で認証ページヘ遷移。ブラウザは、codeパラメータを持たせてリダイレクトページへ。newTokenRequest(String) を使う。
  3. 最後は #createAndStoreCredential(TokenResponse, String)で証明書を保管。


GAE Servlet
google-api-client-1.18.0-rc.jar
google-api-client-appengine-1.18.0-rc.jar
google-api-client-servlet-1.18.0-rc.jar
google-oauth-client-1.18.0-rc.jar
google-oauth-client-appengine-1.18.0-rc.jar
google-oauth-client-servlet-1.18.0-rc.jar
google-http-client-1.18.0-rc.jar
google-http-client-appengine-1.18.0-rc.jar
commons-logging-1.1.1.jar
gson-2.1.jar
httpclient-4.0.1.jar
httpcore-4.0.1.jar
jackson-core-asl-1.9.11.jar
jackson-core-2.1.3.jar
jdo2-api-2.3-eb.jar
jsr305-1.3.9.jar
protobuf-java-2.4.1.jar
transaction-api-1.1.jar
xpp3-1.1.4c.jar

javascriptでのAPI操作

事前準備

APIキー、クライアントIDの取得

流れ

  1. Google APIs Client Library を読み込む
  2. APIキーを使って、認証
  3. ユーザー固有の情報にアクセスする場合はauth認証
  4. 使いたいAPIを読み込む

AppEngine

web.xmlに日本語が混ざっていると、アップロードに失敗

Google Cloud での操作

プロジェクトの指定

何も指定しないとその時点でのデフォルトプロジェクトに対する操作になる。例えば、デプロイとか。
明示的にしていする場合は `--project=[PROJECT]` をつける。
別解:全コマンドでプロジェクトを明示的に指定する
最終更新:2020年08月01日 21:03