我已经构建了Google表格插件,可以从Google Search Console API检索数据并将其写入用户的电子表格。
由于搜索控制台API在"高级Google服务"中无法使用。在Apps脚本中,我使用了GitHub上提供的OAuth2 library和" https://www.googleapis.com/auth/webmasters.readonly"范围。它目前在开发者控制台中使用单独的凭据。
虽然附加组件工作得相当好,但当用户第一次安装时,他/她必须使用Google的OAuth流程对脚本中自动检测到的某些范围进行授权(管理电子表格) ,发送电子邮件,执行外部请求等)。授权完成后,加载项会显示常用的附加侧边栏,用户必须执行其他OAuth流程,这次是批准访问Search Console API(通过OAuth2库)前面提到过。)
我的目标是将搜索控制台范围包含在初始OAuth流程中,这样用户就不需要两次完成整个流程。不幸的是,"范围" “应用程序脚本项目属性”中的部分不可编辑,因此我无法手动添加,并且据我所知,没有办法实现,因此会自动检测到它。
有没有办法做到这一点?如果我使用我用于访问Search Console API的OAuth2库的Apps Script凭据(而不是单独设置),会有什么不同吗?
谢谢!
答案 0 :(得分:0)
如此documentation中所述,Google Apps脚本可以与来自整个网络的API进行互动。本指南介绍了如何在脚本中使用不同类型的API。您可以使用UrlFetch服务直接发出API请求。
使用OAuth向服务发出请求
代表用户行事的API通常需要授权,通常使用OAuth protocol。 Apps脚本不提供对协议的内置支持,但是您可以使用开源库来执行OAuth流并根据您的请求发送凭据:
- OAuth1 for Apps Script:与OAuth 1.0和1.0a兼容。
- OAuth2 for Apps Script:与OAuth2兼容。
此link也可能有所帮助:
直接发出HTTP请求
如果外部应用程序需要Google身份验证,或者此库中尚未提供Google API,则可以直接发出HTTP请求。
authorize
方法返回授权Guzzle Client,因此使用客户端发出的任何请求都将包含相应的授权。
答案 1 :(得分:0)
现在可以通过编辑清单文件来自定义项目的OAuth列表:https://developers.google.com/apps-script/concepts/scopes
Google提到并非所有Google OAuth范围都包含在内(我还没有设法找到确切的列表),但我已经测试过添加Google Search Console范围,它似乎运行良好。