コミュニティ コネクタでは、次の認証方法がサポートされています。
- OAuth 2.0
- パス/ユーザー名/パスワード
- パス/キー
- ユーザー名とパスワード
- ユーザー名とトークン
- キー
- なし
使用する方法に応じて、コネクタに追加の関数を指定する必要があります。
次の表は、コネクタのそれぞれの認証タイプで定義する必要のある関数を示しています。
OAUTH2 | PATH_USER_PASS PATH_KEY USER_PASS USER_TOKEN KEY |
なし | |
---|---|---|---|
getAuthType() |
必須 | 必須 | 必須 |
resetAuth() |
必須 | 必須 | |
isAuthValid() |
必須 | 必須 | |
authCallback() |
必須 | ||
get3PAuthorizationUrls() |
必須 | ||
setCredentials() |
必須 |
getAuthType()
この関数は、コネクタの認証タイプを返します。
OAUTH2
PATH_USER_PASS
/**
* Returns the Auth Type of this connector.
* @return {object} The Auth type.
*/
function getAuthType() {
var cc = DataStudioApp.createCommunityConnector();
return cc.newAuthTypeResponse()
.setAuthType(cc.AuthType.PATH_USER_PASS)
.setHelpUrl('https://www.example.org/connector-auth-help')
.build();
}
PATH_KEY
/**
* Returns the Auth Type of this connector.
* @return {object} The Auth type.
*/
function getAuthType() {
var cc = DataStudioApp.createCommunityConnector();
return cc.newAuthTypeResponse()
.setAuthType(cc.AuthType.PATH_KEY)
.setHelpUrl('https://www.example.org/connector-auth-help')
.build();
}
USER_PASS
USER_TOKEN
重要な
なし
resetAuth()
この関数は、サードパーティ サービスのユーザー用に格納されている認証情報をすべて消去します。
OAUTH2
PATH_USER_PASS
/**
* Resets the auth service.
*/
function resetAuth() {
var userProperties = PropertiesService.getUserProperties();
userProperties.deleteProperty('dscc.path');
userProperties.deleteProperty('dscc.username');
userProperties.deleteProperty('dscc.password');
}
PATH_KEY
/**
* Resets the auth service.
*/
function resetAuth() {
var userProperties = PropertiesService.getUserProperties();
userProperties.deleteProperty('dscc.path');
userProperties.deleteProperty('dscc.key');
}
USER_PASS
USER_TOKEN
重要な
isAuthValid()
この関数は、サードパーティ サービスの認証が有効かどうかを確認するために呼び出されます。認証が有効な場合、
getData()
と getSchema()
は次の理由で失敗しません。
防ぐことができます。認証が有効でない場合は、状況に応じて、承認フローを開始するための通知がユーザーに送信されます。
OAUTH2
PATH_USER_PASS
/**
* Returns true if the auth service has access.
* @return {boolean} True if the auth service has access.
*/
function isAuthValid() {
var userProperties = PropertiesService.getUserProperties();
var path = userProperties.getProperty('dscc.path');
var userName = userProperties.getProperty('dscc.username');
var password = userProperties.getProperty('dscc.password');
// This assumes you have a validateCredentials function that
// can validate if the path, userName and password are correct.
return validateCredentials(path, userName, password);
}
PATH_KEY
/**
* Returns true if the auth service has access.
* @return {boolean} True if the auth service has access.
*/
function isAuthValid() {
var userProperties = PropertiesService.getUserProperties();
var path = userProperties.getProperty('dscc.path');
var key = userProperties.getProperty('dscc.key');
// This assumes you have a validateCredentials function that
// can validate if the path and key are correct.
return validateCredentials(path, key);
}
USER_PASS
USER_TOKEN
重要な
OAUTH2
OAuth2 for Apps Script ライブラリを追加および設定する
OAuth2 for Apps Script ライブラリの設定手順に沿って、このライブラリをコネクタ プロジェクトに追加します。その後、 使用ガイドを参照し、コネクタに OAuth2 サービスを作成する できます。OAuth2 サービスには有効な関数名を自由に付けることができますが、コード内で OAuth2 サービスを参照している間は同一の名前を使用してください。
OAuth2 サービスの例(名前は exampleService
):
authCallback()
この関数は OAuth 2.0 フローを完了するために呼び出されます。サードパーティの認証サービスからのコールバック レスポンスは引数として提供されるため、この関数で処理する必要があります。
OAuth2 for Apps Script ライブラリを使用して OAuth 2.0 コールバックを処理する例:
get3PAuthorizationUrls()
この関数は、サードパーティ サービスの認証フローを開始するために必要な URL を取得するために呼び出されます。isAuthValid
が false
を返す場合、URL
返された結果がボタンまたはリンクとしてユーザーに表示されるため、
アクセスを承認する。詳しくは、
get3PAuthorizationUrls()。
OAuth2 for Apps Script ライブラリを使用して承認 URL を返す例:
USER_PASS
さん、USER_TOKEN
さん、KEY
さん、PATH_USER_PASS
さん、PATH_KEY
さん
以下は、USER_PASS
、USER_TOKEN
、KEY
、
PATH_USER_PASS
、PATH_KEY
の認証フロー。
setCredentials()
setCredentials
は、ユーザーが認証情報を入力した後に呼び出されます。
コミュニティ コネクタの設定ページをご覧ください。
プロパティ サービス: ユーザーごとに認証情報を保存する
UserProperties
を使用します。
PATH_USER_PASS
/**
* Sets the credentials.
* @param {Request} request The set credentials request.
* @return {object} An object with an errorCode.
*/
function setCredentials(request) {
var creds = request.pathUserPass;
var path = creds.path;
var username = creds.username;
var password = creds.password;
// Optional
// Check if the provided path, username and password are valid through
// a call to your service. You would have to have a `checkForValidCreds`
// function defined for this to work.
var validCreds = checkForValidCreds(path, username, password);
if (!validCreds) {
return {
errorCode: 'INVALID_CREDENTIALS'
};
}
var userProperties = PropertiesService.getUserProperties();
userProperties.setProperty('dscc.path', path);
userProperties.setProperty('dscc.username', username);
userProperties.setProperty('dscc.password', password);
return {
errorCode: 'NONE'
};
}
PATH_KEY
/**
* Sets the credentials.
* @param {Request} request The set credentials request.
* @return {object} An object with an errorCode.
*/
function setCredentials(request) {
var creds = request.pathKey;
var path = creds.path;
var key = creds.key;
// Optional
// Check if the provided path and key are valid through
// a call to your service. You would have to have a `checkForValidCreds`
// function defined for this to work.
var validCreds = checkForValidCreds(path, key);
if (!validCreds) {
return {
errorCode: 'INVALID_CREDENTIALS'
};
}
var userProperties = PropertiesService.getUserProperties();
userProperties.setProperty('dscc.path', path);
userProperties.setProperty('dscc.key', key);
return {
errorCode: 'NONE'
};
}