【问题标题】:authorizationUrl on sidebar of gmail addons using appscript使用appscript的gmail插件侧边栏上的authorizationUrl
【发布时间】:2017-12-03 06:41:28
【问题描述】:

我正在使用由 jersey rest 公开的 Google 云数据存储,我已使用 oauth2 进行身份验证以访问 rest APIS。

现在我想从我的 gmail 插件调用 restful API 来填充 gmail 侧边栏上的一些 lovs。

我已经尝试过https://github.com/googlesamples/apps-script-oauth2 上提供的 oauth2 身份验证。

如何使用 gmail 插件在 gmail 侧边栏显示 authorizationUrl

代码库

appscript.json

{
  "timeZone": "America/Los_Angeles",
  "dependencies": {
    "enabledAdvancedServices": [{
      "userSymbol": "Gmail",
      "serviceId": "gmail",
      "version": "v1"
    }],
    "libraries": [{
      "userSymbol": "OAuth2",
      "libraryId": "1B7FSrk5Zi6L1rSxxTDgDEUsPzlukDsi4KGuTMorsTQHhGBzBkMun4iDF",
      "version": "24",
      "developmentMode": true
    }]
  },
  "oauthScopes": ["https://www.googleapis.com/auth/gmail.addons.execute", "https://www.googleapis.com/auth/gmail.addons.current.message.metadata", "https://www.googleapis.com/auth/userinfo.email", "https://www.googleapis.com/auth/gmail.readonly", "https://www.googleapis.com/auth/script.external_request", "https://www.googleapis.com/auth/script.storage"],
  "gmail": {
    "name": "Gmail Add-on Quickstart",
    "logoUrl": "https://www.gstatic.com/images/icons/material/system/2x/bookmark_black_24dp.png",
    "contextualTriggers": [{
      "unconditional": {
      },
      "onTriggerFunction": "buildAddOn"
    }],
    "primaryColor": "#4285F4",
    "secondaryColor": "#4285F4",
    "openLinkUrlPrefixes": ["https://mail.google.com/"],
    "version": "TRUSTED_TESTER_V2"
  }
}

代码.gs

function buildAddOn(e) {
  var driveService = createOauthService();
  Logger.log('Access'+driveService.hasAccess());     // GETTING FALSE HERE
  Logger.log('Auth URL'+driveService.getAuthorizationUrl()); // GETTING PROPER AUTH URL.
  Logger.log('Token'+driveService.getAccessToken()); // NEED TOKEN TO BE USED ON REST CALL
}

function createOauthService() {
  return OAuth2.createService('drive')
      .setAuthorizationBaseUrl('https://accounts.google.com/o/oauth2/auth')
      .setTokenUrl('https://accounts.google.com/o/oauth2/token')
      .setClientId('MY CLOUD CONSOLE CLIENT ID')
      .setClientSecret('MY SECREAT')
      .setCallbackFunction('authCallback')
      .setPropertyStore(PropertiesService.getUserProperties())
      .setScope('https://www.googleapis.com/auth/drive')
      .setParam('login_hint', Session.getActiveUser().getEmail())
      .setParam('access_type', 'offline');
      .setParam('approval_prompt', 'force');
}

这是正确的方式还是我错过了什么?

请提出建议。

【问题讨论】:

    标签: google-apps-script gmail-addons


    【解决方案1】:

    一种记录在案的方法是从您的 buildAddOn() 函数中返回一张卡片,其中包含一个配置为启动授权序列的按钮。

    function buildAuthorizeCard() {
      var authorizationUrl = getOAuthService().getAuthorizationUrl();
      var card = CardService.newCardBuilder();
      var section = CardService.newCardSection();
      section.addWidget(CardService.newTextButton()
              .setText("Authorize MyService")
              .setAuthorizationAction(
                    CardService.newAuthorizationAction()
                      .setAuthorizationUrl(authorizationUrl)
              ));
      card.addSection(section);
      return card.build();
    }
    

    你可以试试看。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-31
      • 2022-01-25
      • 1970-01-01
      • 2014-07-30
      • 2013-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多