اتصال دهنده های انجمن از روش های احراز هویت زیر پشتیبانی می کنند:
- OAuth 2.0
- مسیر / نام کاربری / رمز عبور
- مسیر/کلید
- نام کاربری/رمز عبور
- نام کاربری / رمز
- کلید
- هیچ کدام
بسته به روشی که استفاده می کنید، باید عملکردهای اضافی را در کانکتور خود ارائه دهید.
جدول زیر نشان می دهد که بسته به نوع احراز هویت کانکتور خود باید کدام عملکرد را تعریف کنید.
OAUTH2 | PATH_USER_PASS PATH_KEY USER_PASS USER_TOKEN کلید | هیچ کدام | |
---|---|---|---|
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 را برای Apps Script Library اضافه و راه اندازی کنید
دستورالعملهای راهاندازی کتابخانه OAuth2 for Apps Script را دنبال کنید تا آن را به پروژه اتصال خود اضافه کنید. سپس اولین مرحله در راهنمای استفاده را برای ایجاد یک سرویس OAuth2 در پروژه اتصال خود دنبال کنید. سرویس OAuth2 شما میتواند هر نام تابع معتبری داشته باشد، اما هنگام مراجعه به سرویس OAuth2 در کد خود، از همان نام استفاده کنید.
به عنوان مثال، یک سرویس OAuth2 به نام exampleService
:
authCallback()
این تابع برای تکمیل جریان OAuth 2.0 فراخوانی می شود. پاسخ به تماس از سرویس احراز هویت شخص ثالث به عنوان یک آرگومان ارائه شده است و باید توسط این تابع مدیریت شود.
نمونه ای از مدیریت پاسخ به تماس OAuth 2.0 با استفاده از کتابخانه OAuth2 for Apps Script:
get3PAuthorizationUrls()
این تابع برای دریافت URL مورد نیاز برای شروع جریان احراز هویت برای سرویس شخص ثالث فراخوانی می شود. اگر isAuthValid
false
را برگرداند، URL بازگردانده شده به عنوان یک دکمه یا پیوند به کاربر نمایش داده می شود تا بتواند دسترسی به سرویس شخص ثالث را مجاز کند. به مرجع get3PAuthorizationUrls() مراجعه کنید.
نمونه ای از بازگرداندن URL مجوز با استفاده از کتابخانه OAuth2 for Apps Script:
USER_PASS
، USER_TOKEN
، KEY
، PATH_USER_PASS
، و PATH_KEY
موارد زیر فقط برای جریانهای احراز هویت USER_PASS
، USER_TOKEN
، KEY
، PATH_USER_PASS
، و PATH_KEY
مورد نیاز است.
setCredentials()
setCredentials
پس از اینکه کاربر اطلاعات اعتبار خود را در صفحه پیکربندی کانکتور انجمن وارد کرد فراخوانی می شود. شما باید از سرویس Properties برای ذخیره اعتبارنامه ها بر اساس هر کاربر با استفاده از 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'
};
}