我在我的工作场所使用AppsScript做了很多工作。我在AppsScript中构建了大量自定义OAuth2.0
流程,允许应用程序调用Google的REST API,我还使用了“内置”API交互对象(GmailApp,CalendarApp等)。如果启用任何内置API,脚本编辑器会将相关范围添加到项目信息中,然后在Web应用首次加载时要求用户与这些API进行交互。
如果我需要与REST API和少数内置API调用对象进行交互,则用户需要首先授予内置API范围的权限,然后必须遵循单独的OAuth
流程, REST API。这使得用户体验非常难看。
有没有办法将REST API范围添加到项目信息中的范围列表中,这样当用户首次加载应用程序时,它会要求他们为项目所需的所有范围授予权限?然后,我可以使用ScriptApp.getOAuthToken()
从脚本会话中检索用户oauth令牌,并在所有外部REST API调用中使用它。
编辑(~12:00:05 18 / DEC / 15):
请注意,我已经知道如何通过与AppsScript项目链接的Developer Console项目启用API - 我想找到一种方法来添加启用了Scripts属性的所有API,以便在用户启动时应用程序,它要求他们授予代表他们访问所有已启用的API的权限(甚至是REST api),这样我就不需要为REST API提供第二个手动OAuth流程/令牌。
编辑(~14:00:08 18 / DEC / 15):
我还研究了Drive中的导入/导出功能,在此处记录: https://developers.google.com/apps-script/import-export 并且无法通过这种方式找到改变项目范围(或提供任何范围)的任何方法。
答案 0 :(得分:0)
在应用脚本中,如果您转到“资源>高级Google服务”菜单,则可以启用特定API。它将打开一个包含API列表的Popup,但您也可以选择使用与您的Apps脚本项目相关联的项目进入Developer Console。
从那里,您可以获得与同一个Apps脚本项目相关的必要信息(clientId等),并在您的OAuth流程中使用它。
如果您已经拥有一个包含所有必需配置且已启用所有必需API的项目,您还可以将当前的Apps脚本项目链接到该应用程序,这样您就不必再次执行相同操作了。
在菜单“资源>开发人员控制台项目”中,将打开一个弹出窗口,您可以选择访问开发者控制台,但您也可以选择将当前的Apps脚本项目与任何其他应用关联你已经有了。
请记住,当您尝试使用API时,您必须在“高级Google服务”中启用它,无论是在弹出窗口列表中还是在开发者控制台中。
执行此操作后,访问令牌将与同一个应用程序相关,并且用户在启用新API时只会授予一次权限。
我希望这会有所帮助。