はじめに
cybozu.com共通管理メニュー内の外部連携でOAuthクライアントの設定ができます。
今回は、Google Apps Script(以下GAS)の
チュートリアル
を参考に、OAuth 2.0の承認を経て、kintone APIでデータを取得するサンプルコードを作成します。
機能としては、kintone APIより取得したメッセージをGoogleドキュメントに書き込み、GmailでGoogleドキュメントへのリンクを送信するサンプルを作成します。
なお、コードを簡素化するため、OAuth 2.0認証にGASの
ライブラリ
を利用します。
cybozu.comのOAuthクライアントについてのドキュメントは こちら です。
開発手順
1. kintoneアプリの開発
画面を参考にGoogleドキュメントへ送信するメッセージを入力するフィールドを設定します。
| フィールドの種類 | フィールド名 | フィールドコード |
|---|---|---|
| 文字列(1行) | メッセージ | message |
「フォームを保存」し、「アプリを更新」します。
kintoneアプリの設定は以上です。
2. OAuth2ライブラリの設定
-
Google Apps Script
にて、Apps Scriptダッシュボードにお持ちのGoogleアカウントでログインします。
-
「新しいプロジェクト」または「Apps Script」のカードをクリックして、GASのエディターを表示します。
-
プロジェクト名を入力し、「リソース」メニューから、「ライブラリ」を選択します。
-
apps-script-oauth2
のスクリプトID「1B7FSrk5Zi6L1rSxxTDgDEUsPzlukDsi4KGuTMorsTQHhGBzBkMun4iDF」を入力し、「検索」ボタンをクリックします。
最新のバージョンを選択して、「追加」ボタンでライブラリを追加します。
ライブラリの詳細は apps-script-oauth2を参照してください。
3. OAuthクライアントの設定
kintoneのcybozu.com共通管理ページより、外部連携の設定画面にて、「OAuthクライアントの追加」をクリックします。
リダイレクトエンドポイントは次の形式で設定します。
|
|
スクリプトIDは、「プロジェクトの設定」メニュー内で確認できます。
クライアント名とリダイレクトエンドポイントを入力し、「保存」すると以下の情報が、自動生成されます。
- クライアントID
- クライアントシークレット
- 認可エンドポイント
- トークンエンドポイント
「連携利用ユーザーの設定」をクリックし、API利用を許可するユーザーを選択し、設定を保存します。
以上でOAuthクライアントの設定は終了です。
4. GASアプリの開発
GASのアプリは、こちらの
チュートリアル
を参考に開発します。
アプリの機能
- OAuth 2.0でkintone APIへのアクセスを認証する。
- kintone APIより、メッセージを取得する。
- 「Hello, World!」という名前で、Googleドキュメントを作成する。
- Googleドキュメントのボディーにkintoneからのメーセージを書き込む。
- GmailでGoogleドキュメントへのリンクを送信する。
OAuth 2.0の認証に関しましては、上記で設定した
OAuth2 for Apps Script
というGASのライブラリを利用します。
4.1. GASのコーディング
以下を参考にコーディングします。
|
|
4.2. コードの解説
|
|
doGet関数は、GASコードをのちほどWebアプリケーションとして実行した際、最初に自動で呼び出される関数です。
OAuth2.0認証サービスを生成し、すでに承認されていれば、アクセストークンを引き渡し、kintone APIよりデータを取得する関数を呼び出します。
まだ、認証されていない場合には、承認リンクをブラウザーに表示します。
|
|
OAuth2.0ライブラリを使って、OAuth2.0承認サービスを生成します。上記で設定したOAuthクライアントの各種情報を設定しています。
PropertiesService.getScriptProperties()にて、承認トークンの設定を保存するサービスの指定をしています。
スコープの値は、
kintoneのOAuthスコープ
で確認してください。
コールバック関数は、authCallbackを指定します。
|
|
ブラウザーから承認リンクをクリックした場合にkintoneへ認可リクエストを送信した際に処理されるコールバック関数です。ライブラリ内で認可コードを取得して、アクセストークンを要求・取得する処理が実行されます。
承認されるとkintone APIを実行する関数を呼び出し、ブラウザーに「Success」と表示されます。
また、承認が拒否された場合には「Denied」が表示されます。
|
|
取得したアクセストークンをヘッダーに設定して、kintone APIでアプリのデータを取得します。URLには、アクセスしたいアプリのIDとレコード番号を含めて指定します。
取得したデータをJSON形式に変換します。
|
|
Googleドキュメントを新規作成し、ボディーにkintoneから取得したデータを書き込みます。
その後、新規作成したGoogleドキュメントのURLを取得します。
|
|
ログインしているユーザーのEメールアドレスを取得し、Eメールの題目として、ドキュメント名を指定します。
取得したドキュメントのURLをリンクとして、Eメールのボディーに追加します。
Gmailにて、ログインユーザーへドキュメントへのリンクをメール送信します。
5. GASアプリのOAuthスコープの設定
GASからGmailやGoogleドキュメントを利用するため、マニフェストファイルにOAuth Scopeを設定します。
参考:
OAuth 2.0 Scopes for Google APIs
-
GASエディターの「プロジェクト設定」メニュー内で、「『appsscript.json』マニフェスト ファイルをエディタで表示する」にチェックを入れます。
-
表示された「appsscript.json」を選択し、次の値を追加します。
1 2 3 4 5 6"oauthScopes": [ "https://www.googleapis.com/auth/script.external_request", "https://www.googleapis.com/auth/userinfo.email", "https://www.googleapis.com/auth/documents", "https://www.googleapis.com/auth/gmail.send" ], -
「プロジェクトを保存」アイコンをクリックして保存します。
6. 動作確認
GASのスクリプトエディター右上の「デプロイ」メニューより、「新しいデプロイ」を選択します。
「ウェブアプリ」を選択します。
「デプロイ」ボタンをクリックします。
Googleアカウントのデータへのアクセスを許可します。
GASを作成したGoogleアカウントを選択します。
次のような警告が表示される場合、「詳細」をクリック後、「(安全でないページ)に移動」をクリックし、続けます。
GASのGoogleアカウントへのアクセスを許可します。
ウェブアプリのURLをクリックします。
ブラウザーに表示された承認リンクをクリックします。
kintoneのログイン画面が表示されるので、ユーザー名とパスワードを入力してログインします。
OAuthクライアントのアクセスを許可します。
「Success!」が表示されます。 OAuthクライアントの承認を経て、スクリプトが実行されたことになります。
しばらくするとGmailが送信され、Googleドキュメントへのリンクをクリックしてkintoneアプリで設定したメッセージが表示されていれば、成功です。
まとめ
新たに導入された外部連携の機能で、外部アプリケーションからOAuth 2.0を使って、kintone APIへのアクセスができるようになりました。
これにより、OAuth2.0で安全にユーザーを認証し、外部アプリケーションからkintone APIを通じて、アプリのデータを取得できるようになりました。
関連ページ
このTipsは、2024年7月版kintoneで動作を確認しています。
