Trình kết nối cộng đồng hỗ trợ các phương thức xác thực sau:
- OAuth 2.0
- Đường dẫn/Tên người dùng/Mật khẩu
- Đường dẫn/Khoá
- Tên người dùng/Mật khẩu
- Tên người dùng/mã thông báo
- Khoá
- Không có
Tuỳ theo phương thức đang dùng, bạn phải cung cấp thêm các hàm khác trong trình kết nối.
Bảng sau đây cho biết hàm nào bạn phải xác định tuỳ thuộc vào loại xác thực của trình kết nối.
OAUTH2 | PATH_USER_PASS PATH_KEY USER_PASS USER_TOKEN KEY |
KHÔNG CÓ | |
---|---|---|---|
getAuthType() |
bắt buộc | bắt buộc | bắt buộc |
resetAuth() |
bắt buộc | bắt buộc | |
isAuthValid() |
bắt buộc | bắt buộc | |
authCallback() |
bắt buộc | ||
get3PAuthorizationUrls() |
bắt buộc | ||
setCredentials() |
bắt buộc |
getAuthType()
Hàm này sẽ trả về loại xác thực cho trình kết nối.
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
PHÍM
KHÔNG CÓ
resetAuth()
Chức năng này sẽ xoá mọi thông tin xác thực được lưu trữ cho người dùng đối với bên thứ ba .
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
PHÍM
isAuthValid()
Hàm này được gọi để xác định xem quá trình xác thực cho bên thứ ba hay không
dịch vụ của bạn là hợp lệ. Nếu xác thực hợp lệ, thì dự kiến sẽ gọi lệnh đến
getData()
và getSchema()
sẽ không thực hiện được do
truy cập trái phép. Nếu xác thực không hợp lệ thì người dùng có thể nhận được
để bắt đầu quy trình uỷ quyền.
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
PHÍM
OAUTH2
Thêm và thiết lập OAuth2 cho Thư viện Apps Script
Làm theo hướng dẫn thiết lập cho OAuth2 cho Apps Script để thêm vào dự án trình kết nối của bạn. Sau đó, hãy làm theo bước đầu tiên trong hướng dẫn sử dụng để tạo dịch vụ OAuth2 trong trình kết nối dự án. Dịch vụ OAuth2 có thể có bất kỳ tên hàm nào hợp lệ nhưng hãy đảm bảo sử dụng cùng một tên khi tham chiếu đến dịch vụ OAuth2 trong mã.
Ví dụ: dịch vụ OAuth2 có tên exampleService
:
authCallback()
Hàm này được gọi để hoàn tất quy trình OAuth 2.0. Phản hồi của lệnh gọi lại từ dịch vụ xác thực của bên thứ ba được cung cấp dưới dạng một đối số và sẽ do hàm này xử lý.
Ví dụ về cách xử lý lệnh gọi lại OAuth 2.0 bằng OAuth2 cho Apps Script thư viện:
get3PAuthorizationUrls()
Hàm này được gọi để lấy URL cần có để bắt đầu quy trình xác thực
quy trình cho dịch vụ bên thứ ba. Nếu isAuthValid
trả về false
thì URL này
được trả lại sẽ được hiển thị cho người dùng dưới dạng một nút hoặc liên kết để họ có thể
cho phép truy cập vào dịch vụ bên thứ ba. Xem tài liệu tham khảo cho
get3PLicensingUrls().
Ví dụ về cách trả về URL uỷ quyền bằng OAuth2 cho Apps Script thư viện:
USER_PASS
, USER_TOKEN
, KEY
, PATH_USER_PASS
và PATH_KEY
Dữ liệu sau chỉ cần cho USER_PASS
, USER_TOKEN
, KEY
,
Quy trình xác thực PATH_USER_PASS
và PATH_KEY
.
setCredentials()
setCredentials
được gọi sau khi người dùng nhập một trong hai thông tin xác thực của họ
trên trang cấu hình trình kết nối cộng đồng. Bạn nên sử dụng
Dịch vụ tài sản để lưu thông tin xác thực cho mỗi người dùng
bằng 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'
};
}