Google社区连接器oAuth2发布Gdrive

时间:2018-04-18 23:56:22

标签: google-data-studio

我正在尝试使用this reference创建基本社区连接器。

当我转到数据源页面并按授权按钮时出现问题:它只会打开一个空白的弹出窗口。请问,任何人都可以告诉我代码的问题。

code.js

function getDriveService() {
// Create a new service with the given name. The name will be used when
// persisting the authorized token, so ensure it is unique within the
// scope of the property store.
return OAuth2.createService('drive')

  // Set the endpoint URLs, which are the same for all Google services.
  .setAuthorizationBaseUrl('https://accounts.google.com/o/oauth2/auth')
  .setTokenUrl('https://accounts.google.com/o/oauth2/token')

  // Set the client ID and secret, from the Google Developers Console.
  .setClientId('')
  .setClientSecret('')

  // Set the name of the callback function in the script referenced
  // above that should be invoked to complete the OAuth flow.
  .setCallbackFunction('authCallback')

  // Set the property store where authorized tokens should be persisted.
  .setPropertyStore(PropertiesService.getUserProperties())

  // Set the scopes to request (space-separated for Google services).
  .setScope('https://www.googleapis.com/auth/drive')

  // Below are Google-specific OAuth2 parameters.

  // Sets the login hint, which will prevent the account chooser screen
  // from being shown to users logged in with multiple accounts.
  .setParam('login_hint', Session.getActiveUser().getEmail())

  // Requests offline access.
  .setParam('access_type', 'offline')

  // Forces the approval prompt every time. This is useful for testing,
  // but not desirable in a production application.
  .setParam('approval_prompt', 'force');
}


function showSidebar() {
var driveService = getDriveService();
if (!driveService.hasAccess()) {
var authorizationUrl = driveService.getAuthorizationUrl();
var template = HtmlService.createTemplate(
    '<a href="<?= authorizationUrl ?>" target="_blank">Authorize</a>. ' +
    'Reopen the sidebar when the authorization is complete.');
template.authorizationUrl = authorizationUrl;
var page = template.evaluate();
DocumentApp.getUi().showSidebar(page);
} else {
// ...
}
}


function authCallback(request) {
var driveService = getDriveService();
var isAuthorized = driveService.handleCallback(request);
if (isAuthorized) {
return HtmlService.createHtmlOutput('Success! You can close this tab.');
} else {
return HtmlService.createHtmlOutput('Denied. You can close this tab');
}
}


function makeRequest() {
var driveService = getDriveService();
var response = UrlFetchApp.fetch('https://www.googleapis.com/drive/v2/files? 
maxResults=10', {
headers: {
  Authorization: 'Bearer ' + driveService.getAccessToken()
}
});
// ...
}

function logout() {
var service = getDriveService()
service.reset();
}

appsscript.json

{
"timeZone": "Asia/Karachi",
"dependencies": {
"libraries": [{
  "userSymbol": "OAuth2",
  "libraryId": "1B7FSrk5Zi6L1rSxxTDgDEUsPzlukDsi4KGuTMorsTQHhGBzBkMun4iDF",
  "version": "26"
}]
},
"dataStudio": {
"name": "Google Drive Metadata",
"logoUrl": 
"https://www.gstatic.com/images/branding/product/1x/google_fonts_48dp.png",
"company": "Webemblaze",
"addonUrl": "https://developers.google.com/datastudio/connector/getstarted",
"supportUrl": "https://developers.google.com/datastudio/connector/faq",
"description": "This connector uses the Google Fonts Developer API to retrieve metadata for all font families served by Google."
 },
 "exceptionLogging": "STACKDRIVER"

 }

1 个答案:

答案 0 :(得分:0)

请参阅Authentication with OAuth 2.0上的文档,了解如何在社区连接器中使用OAuth2。您还可以查看使用OAuth2的GitHub Connector示例代码。