在Google AppScript用户属性中存储API密钥和机密

问题描述 投票:0回答:1

我对Google AppScript还是陌生的,尝试编写一个自定义REST API的连接器。对于该API,我需要每个用户一个API密钥(或密钥)。由于在脚本中以纯文本形式存储秘密不是最好的主意,因此我想将其存储在Google PropertyService中并从那里检索它。像这样:

var userProperties = PropertiesService.getUserProperties();
var apiKey = userProperties.getProperty('MY_SECRET')

但是我不明白的是,用户如何才能首先存储密钥?我找不到用户(在本例中为我)可以查看或编辑属性的任何地方。然后,我发现了这个不错的introduction to user properties,它在脚本容器中创建了一个菜单,允许用户手动输入机密。

const API_KEY = 'API_KEY';

var ui = SpreadsheetApp.getUi();
var userProperties = PropertiesService.getUserProperties();


function onOpen(){
  ui.createMenu('API Keys')
    .addItem('Set API Key', 'userPromptApiKey')
    .addItem('Delete API Key', 'deleteApiKey')
  .addToUi();
}


function userPromptApiKey(){
  var userValue = ui.prompt('API Key ', ui.ButtonSet.OK);
  // ToDo: add current key to the prompt
  userProperties.setProperty(API_KEY, userValue.getResponseText());
}


function deleteApiKey(){
  userProperties.deleteProperty(API_KEY)
}

问题是,我的脚本未绑定到任何容器(没有电子表格,没有文档)。相反,我想稍后在Google DataStudio中使用它。这就是为什么

SpreadsheetApp.getUi();

不起作用。关于如何处理的任何想法或建议?还有其他建议的方法来处理这些秘密吗?

javascript google-apps-script properties user-input api-key
1个回答
0
投票

您需要一个UI才能从用户那里获取输入数据。

您可以创建一个Web App来构建一个获取密钥的接口。

此外,如果您要构建脚本而不是发布它,则可以对密钥进行硬编码,直到发布为止。

© www.soinside.com 2019 - 2024. All rights reserved.