【发布时间】:2021-01-11 01:16:04
【问题描述】:
我有一个 Flutter 应用程序,我在其中通过 http 请求运行 Google Apps 脚本。该脚本的目的是创建一个表单并将响应链接到传入的电子表格ID。该脚本配置为仅允许 Google 帐户访问它,并且我已将 Flutter 应用程序设置为使用服务帐户来访问使用格式的脚本:
getCredentials().then( (AuthClient client){
response = client.get(url, headers{"Authorization": "Bearer ${client.access_token}");
});
问题:问题是服务帐户第一次发出请求时会收到 HTML 响应,说明帐户需要授予脚本访问其数据的权限,而我'不知道该怎么做。
我对发出 http 请求并将其与 GoogleAPI 一起使用还很陌生,所以我被困住了。有什么建议吗?
【问题讨论】:
-
另外,使用自己的凭据创建文档并更改所有权是不好的做法吗?
-
我不相信您可以通过 Apps Script API ref 使用服务帐户。你能分享更多你的代码吗?您还可以详细说明为什么要为此使用服务帐户吗?没有它们也有办法做到这一点,但也许你有特殊的理由使用它们。另外,电子表格ID是从客户端传入的吗?您的应用程序脚本项目是以任何方式部署的还是您自己运行的?
-
您不能直接使用 Apps Script API,但您可以向已部署为 WebApp 的 App Script 发出 http 请求(这就是我正在做的事情)。此外,此应用程序旨在成为一个易于使用的应用程序,并且任何拥有 Google 帐户且没有技术背景的人都可以进行设置。从我能找到的只有服务帐户符合我的要求,因为我相信它是唯一的凭据,任何人都可以简单地创建和使用它,而无需任何其他要求,例如验证或域
-
电子表格ID也以url作为参数传入。顺便说一句,您指的是哪个代码,您是否希望我扩展任何特定的部分?
-
如果您已将其部署为具有最小权限的 Web 应用程序,那么任何人都可以向它发出请求。您可以从某些客户端 JavaScript 发出请求,而无需任何身份验证。这绕过了对服务帐户的任何需求,除非我遗漏了什么。您的应用程序是数据输入工具吗?在哪种情况下,您需要该应用有权操作他们的电子表格?您可能无法访问的电子表格,对吧?如果是这样,那么他们将需要进行身份验证,这是没有办法的。服务帐户仅在域内真正起作用。
标签: flutter google-apps-script httprequest httpresponse service-accounts