Google apps script 谷歌应用脚本重定向uri错误

Google apps script 谷歌应用脚本重定向uri错误,google-apps-script,oauth,oauth-2.0,Google Apps Script,Oauth,Oauth 2.0,我正在尝试制作一个独立的Google Apps脚本,以通过OAuth2库访问API,可在以下位置找到: 到目前为止,我还无法让任何示例正常工作,但我认为这是因为我无法注册我的应用程序并设置OAuth重定向URI。这是我第一次尝试使用OAuth 以下是我采取的步骤: 创建新的独立Google应用程序脚本 粘贴到Dropbox.gs的内容中(对于本例) 将OAuth2库添加到我的脚本中 (参考资料>库,并粘贴到操作指南中列出的ID中) 转到控制台(参考资料>云平台项目)并导航到 API和服务>凭据页

我正在尝试制作一个独立的Google Apps脚本,以通过OAuth2库访问API,可在以下位置找到:

到目前为止,我还无法让任何示例正常工作,但我认为这是因为我无法注册我的应用程序并设置OAuth重定向URI。这是我第一次尝试使用OAuth

以下是我采取的步骤:

  • 创建新的独立Google应用程序脚本
  • 粘贴到Dropbox.gs的内容中(对于本例)
  • 将OAuth2库添加到我的脚本中 (参考资料>库,并粘贴到操作指南中列出的ID中)
  • 转到控制台(参考资料>云平台项目)并导航到 API和服务>凭据页面
  • 从该页面获取客户端ID和客户端密码,并将它们粘贴到我的脚本中
  • 从脚本获取重定向URI(通过运行logRedirectUri())
  • 将重定向URI粘贴到云平台控制台,然后点击save
  • 我得到了这个链接上显示的错误(显示为“您没有执行此操作的权限”


    根据我的研究,我需要输入此URI才能使脚本正常工作。为什么不保存此URI?

    以下是一些您可以尝试的方法

    第一步

    web应用程序api

    从使用appscript API更改为使用web app API。您可以在API管理控制台中创建一个新的API

    然后选择web应用程序选项

    最后,您将拥有一个新的API

    打开新的API并获取客户端ID和机密

    将应用程序的重定向粘贴到api中

    https://script.google.com/macros/d/{SCRIPT ID}/usercallback
    
    第二步

    身份验证和重定向

    下一步很棘手,可能需要一些修改

    下面代码的第一部分生成一个URL。然后需要指示用户在新窗口中打开生成的URL。新窗口将显示所有常用的google权限,包括任何范围。当用户接受后,这些权限将重定向回您的应用程序

    function getAuthURL() {
      var driveService = getDriveService();
      if (!driveService.hasAccess()) {
        var authorizationUrl = driveService.getAuthorizationUrl();
        Logger.log(authorizationUrl)
    }
    
    function authCallback(request) {
      var driveService = getDriveService();
      var isAuthorized = driveService.handleCallback(request);
      if (isAuthorized) {
        return HtmlService.createHtmlOutput('Success! You can close this tab.');
      } else {
        return HtmlService.createHtmlOutput('Denied. You can close this tab');
      }
    }
    
    第三步

    访问令牌

    现在,用户授予了获取访问令牌并将其与获取请求一起传递的权限

    function makeRequest() {
      var driveService = getDriveService();
      var response = UrlFetchApp.fetch('https://www.googleapis.com/drive/v2/files?maxResults=10', {
        headers: {
          Authorization: 'Bearer ' + driveService.getAccessToken()
        }
      });
      // ...
    }
    

    我还应该指出,如果我尝试在未输入重定向URI的情况下运行这些示例,则在尝试运行授权URL时会出现“无效客户端ID”问题。您是否在google应用程序域上?如果您在浏览器中登录到多个google帐户,则控制台可能不会“知道”"正在使用哪个帐户。注销所有帐户,只登录你想用于此web应用程序的帐户。另外,请参阅web应用程序Jason上的以下帖子,这只是一个普通的gmail帐户。Sandy,我只是以一个用户的身份登录,但我尝试了隐姓埋名。你给出的说明基本上就是我尝试的。嗨,Jason-谢谢!我不知道bug是否已修复,或者你的技巧是否奏效,但创建新凭据实际上允许我输入重定向URI。这就是进展!当我导航到授权URL时,我仍然运气不佳:“您使用的应用程序似乎提交了一个错误的请求。如果您想向应用程序的开发人员报告此错误,请包含以下信息。”我会继续尝试。我又花了几个小时来处理此问题。我已经从应用程序脚本API(没有重定向URI)中来回使用客户端ID(和机密),以及来自新的web应用程序API(它确实具有重定向URI)的。当我从任何一个安装程序访问授权URL时,都会发生同样的事情。唯一的区别是错误消息中的客户端ID。嗨,还有其他原因。谷歌不喜欢任何人使用这个库。从我的角度来看,我发现他们在大约10分钟内撤销了我使用的任何令牌。这只发生在我的私人帐户上ate帐户。当我在我们的域上运行相同的代码时,它运行正常。