【问题标题】:Google Apps Script redirect uri errorGoogle Apps 脚本重定向 uri 错误
【发布时间】:2018-06-15 16:25:06
【问题描述】:

我正在尝试制作一个独立的 Google Apps 脚本以通过 OAuth2 库访问 API,可在此处找到:https://github.com/googlesamples/apps-script-oauth2

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

以下是我采取的步骤:

  1. 创建新的独立 Google 应用脚本
  2. 粘贴 Dropbox.gs 的内容(本例)
  3. 将 OAuth2 库添加到我的脚本 (资源 > 库,并粘贴到方法中列出的 ID)
  4. 转到控制台(资源 > 云平台项目)并导航到 API 和服务 > 凭证页面
  5. 从该页面获取客户端 ID 和客户端密码并将它们粘贴到我的脚本中。
  6. 从脚本中获取重定向 URI(通过运行 logRedirectUri())
  7. 将重定向 URI 粘贴到云平台控制台中,然后点击保存。

我收到此链接上显示的错误(显示为“您无权执行此操作。

Request URI error

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

【问题讨论】:

  • 我还应该指出,如果我尝试在未输入重定向 URI 的情况下运行这些示例,当我尝试运行授权 URL 时会出现“无效的客户端 ID”问题。
  • 你在谷歌应用域上吗?
  • 如果您在浏览器中登录了多个 google 帐户,控制台可能不“知道”它正在使用的帐户。退出所有帐户,并仅登录您要用于此网络应用的帐户。
  • Jason,只是一个普通的 gmail 帐户。桑迪,我只作为一个用户登录,但我尝试了隐身模式。您给出的说明基本上是我尝试过的。

标签: google-apps-script oauth oauth-2.0


【解决方案1】:

您可以尝试以下方法。

第一步

网络应用 api

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

然后选择网络应用选项。

最后你将拥有一个新的 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 时,我仍然没有运气:“您使用的应用程序似乎提交了错误的请求。如果您想将此错误报告给应用程序的开发人员,请提供以下信息。”我会继续努力的。
  • 我在这方面又花了几个小时。我已经从应用脚本 API(没有重定向 URI)和新的 Web 应用 API(有重定向 URI)中来回使用客户端 ID(和秘密)。当我从任一设置访问授权 URL 时,都会发生同样的事情。唯一的区别是错误消息中的客户端 ID。
  • 嗨,还有其他事情在起作用。谷歌不喜欢任何人使用这个库。在我这边,我发现他们在大约 10 分钟内撤销了我制作的任何令牌。这只发生在我的私人帐户上。当我在我们的域上运行相同的代码时,它运行正常。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多