「GoogleAPI」、聞いたことはあるでしょうか。
これは、Googleの機能(Gmail、Gdrive,Youtube等)を他アプリから呼び出す際に使います。もちろん、RPAでの自動化でも非常に非常に役に立ちます。なぜならメール送信などよく使われる処理を早く正確に実装できるからです。
しかし、言語ごとに異なる設定方法、公式リファレンスが英語であるなど、なかなかに敷居が高いものだと思います。
今回は、このGoogleAPIの最大の難所であると思われる「トークン取得」までの方法を丁寧にご説明します。
また、RPAとの連携という意味合いで、UiPathでの取得方法も紹介いたします。
WebAPIとは
WebAPIとは、Webアプリの一部機能を外部から呼び出せるように公式が用意したデータ連携方法です。
これにより、実際のアプリ画面から操作せずともアプリの機能を使えます。
自動化にうってつけだと思いませんか??
一段階認証と二段階認証
APIというのはデータ連携を行うための通路だと思ってください。また、誰でもAPIを使ってデータにアクセスできないよう、その通路には鍵付きの扉がついています。
この扉を開けるためのカギを「トークン(アクセストークン)」と呼びます。
トークンを持っていないとAPIは使えません(通れません)。
この鍵の取得方法は大きく分けて二つあり、「一段階認証」、「二段階認証」といいます。
一段階認証とは、アカウントのログインIDとパスワードによってすぐにトークンが取得できるというものです。また、このトークンの多くは再発行しない限り使い続けることができます。
二段階認証とは、アカウントのログインIDとパスワードにより本人確認用の「認証コード」が発行され、それを用いることでトークンが取得できる。というものです。さらに、このトークンは有効期限が定められている場合が多く、「更新」という手段で期限をリセットするのが一般的です。
何らかの会員登録やアカウント作成でこのような一時的なコードを受け取った経験があると思います。それも二段階認証です。
今回は、一段階認証の例としてチャットワークAPI、TwitterAPI、二段階認証の例としてGmaiAPI、salesforceAPIなどがあります。
チャットワークAPIについて記事を書いていますので、もしご興味があればご覧ください。本記事の二段階認証のめんどくささが一目瞭然だと思います。
https://mag.sweeep.ai/rpa/chatworkapi-message-send/
GoogleAPI初期設定
この章では、上で説明したログインIDとパスワードに対応する、「クライアントID」、「クライアント・シークレット」というものを取得することがゴールになります。
その前段階として、GoogleAPI管理画面の設定を行います。
プロジェクト作成
Google Developers consoleにログイン
①Google Developers Console (https://console.developers.google.com/apis) を開きます。
②API連携を行うGoogleアカウントでログインします。
プロジェクトの作成
①[プロジェクトの選択]をクリックします。
②[新しいプロジェクト]をクリックします。
③[プロジェクト名]、[組織]を決定(任意)し、[作成]します。
これでプロジェクトの作成が完了しました。
APIの有効化
API Manager
①先ほど作成したプロジェクトを開きます。
Gmail APIの有効化
①三本線(ナビゲーションメニュー)から[APIとサービス]の[ダッシュボード]に移動します。
②[APIとサービスの有効化]をクリックします。
③[Gmail API]を探しクリックします。
④[有効にする]をクリックし有効化します。
これでGmailAPIが有効になりました。
クライアントID・シークレットの取得
OAuth同意認証
①ナビゲーションメニューから[認証情報]を選択します。
②[OAuth同意画面]を選択します。
③[メールアドレス]、[アプリケーション名]を決定し、[保存]します。
これで、同意画面の設定が完了しました。
クライアントID・シークレット取得
①[認証情報]から[認証情報を作成]を選択します。
②[OAuthクライアントID]を選択します。
③GmailAPI連携を行うアプリケーションを選択し、[作成]します。
今回の場合は[その他]を選択し、[名前]を”UiPath”としておきます。
④クライアントIDとクライアントシークレットが取得できます。
これらは後のトークン取得で必要なので控えておきましょう。
※クライアントIDとシークレットは一度作成されると今後変更されることはない。
※生成されたID・シークレットは[認証情報]画面から再度確認することもできる。
GoogleAPIトークン取得
この章では、先ほど取得したクライアントID・シークレットを使って、トークンを取得します。
また、トークンの更新方法にも触れます。
認証コードの取得
①Webブラウザで以下を開きます。
https://accounts.google.com/o/oauth2/auth?client_id={OAuthのクライアントID}&redirect_uri=urn:ietf:wg:oauth:2.0:oob&scope={使用するスコープ}&response_type=code&approval_prompt=force&access_type=offline
※{OAuthのクライアントID}は2.3で取得したクライアントID
※{使用するスコープ}でアクセス権限を指定します。
↓一部の例
https://www.googleapis.com/auth/gmail.readonly…読み込みのみ
https://www.googleapis.com/auth/gmail.compose…下書きのみ
https://www.googleapis.com/auth/gmail.send…送信のみ
https://www.googleapis.com/auth/gmail.labels…ラベル操作のみ
https://mail.google.com/…フルアクセス
全スコープは以下ページに載っています。
https://developers.google.com/gmail/api/auth/scopes
今回は送受信などすべての操作が可能なhttps://mail.google.com/を使用します。
②アカウントを選択します。
③権限が正しいことを確認し、[許可]します。
④認証コードが取得できます。
アクセストークンの取得
コマンドプロンプトでの取得
①コマンドプロンプトで以下のコードを実行します。
curl -d client_id={OAuthのクライアントID} -d client_secret={OAuthのクライアントシークレット} -d redirect_uri=urn:ietf:wg:oauth:2.0:oob –d grant_type=authorization_code -d code={AutorizationCode} https://accounts.google.com/o/oauth2/token
※{OAuthのクライアントID}は2.3で取得したクライアントID
※{OAuthのクライアントシークレット}は2.3で取得したクライアントシークレット
※{AutorizationCode}は3.1で取得した認証コード
②リクエストに成功すると、Json形式で返ってきます。
※access_token…HTTPリクエストに使用するトークン
※expries_in…アクセストークンの有効時間(s)
※refresh_token…新しいアクセストークンを生成するための更新トークン
※curlコードを実行できない場合は、curlを有効にするか下記のUiPathによる取得を試みてください。
UiPathでの取得
①HTTP Requestアクティビティを使用します。
HTTPリクエストアクティビティがない場合、インストールが必要です。
②アクティビティを設置すると同時にHTTP Request Wizardが開きます。
ここでリクエストのエンドポイントやヘッダーなどを指定します。
※このWizardは一度[OK]を押して設置してしまうと二度と開けません。ですが、もろもろの設定は設置後にプロパティ画面から設定できます(以下で使います)。
③エンドポイント、パラメータなどを設定し、[Preview]を押下して実行します。
———————————————————————-
エンドポイント:https://accounts.google.com/o/oauth2/token
Request Method:POST
パラメータ(Name=Value):
client_id={OAuthのクライアントID}
client_secret={OAuthのクライアントシークレット}
redirect_uri=urn:ietf:wg:oauth:2.0:oob
grant_type=authorization_code
code={AuthorizationCode}
————————————————————————
※{OAuthのクライアントID}は2.3で取得したクライアントID
※{OAuthのクライアントシークレット}は2.3で取得したクライアントシークレット
※{AutorizationCode}は3.1で取得した認証コード
入力したものが以下になります。
※パラメータを追加する際は[Add Parameter]をクリック
※パラメータの[Name]は任意に変更してはいけない
※パラメータ値[Value]にスペースなどが含まれているとリクエストエラーとなるので注意
④リクエストに成功すると次のように表示されます。
※入力ミスなどの人的ミスによってこの処理に失敗した場合、認証コードが失効してしまいます。そうなった場合、認証コードから取得しなおしてください。
更新トークンの利用
上で述べたように、アクセストークンは生成してから1時間で失効してしまいます。その際、同時に生成された更新トークンを用いることで再度アクセストークンを生成することができます。
コマンドプロンプトでの更新
①コマンドプロンプトで以下のコードを実行します。
curl -d “client_id={OAuthのクライアントID}&client_secret={OAuthのクライアントシークレット}&refresh_token={refresh_token}&grant_type=refresh_token” https://accounts.google.com/o/oauth2/token
※{OAuthのクライアントID}は2.3で取得したクライアントID
※{OAuthのクライアントシークレット}は2.3で取得したクライアントシークレット
※{refresh_token}は3.2で取得したリフレッシュトークン
②リクエストに成功すると、Json形式で返ってきます。
UiPathでの更新
①HTTP Requestで以下のようにパラメータを設定する。
———————————————————————-
エンドポイント:https://accounts.google.com/o/oauth2/token
Request Method:POST
パラメータ(Name=Value):
client_id={OAuthのクライアントID}
client_secret={OAuthのクライアントシークレット}
refresh_token={更新トークン}
grant_type=refresh_token
————————————————————————
※{更新トークン}は3.2で取得した更新トークン
②以下のようにアクセストークンが得られる。
③更新トークン自体に有効期限はないため、この処理は何度でも使えます。下のようにフローチャートのなかで用いて、APIを扱う前にトークンの更新を行えばよいでしょう。
以上で、初期設定からトークン取得、トークンの更新について完了しました。
まとめ
いかがでしたでしょうか。他にもUiPathに関する記事は多数あります!下記もあわせてご覧ください。