Google Apps脚本重定向uri错误

时间:2018-01-05 20:16:48

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

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

到目前为止,我还没有能够获得任何示例,但我认为这是因为我无法注册我的应用程序并设置OAuth重定向URI。这是我第一次尝试使用OAuth。

以下是我采取的步骤:

  1. 创建新的独立Google App脚本
  2. 粘贴Dropbox.gs的内容(对于此示例)
  3. 将OAuth2库添加到我的脚本中 (资源>库,并粘贴在操作方法中列出的ID)
  4. 转到控制台(资源>云平台项目)并导航到 API和&服务>凭证页面
  5. 从该页面获取客户端ID和客户端密钥并将其粘贴到我的脚本中。
  6. 从脚本中获取重定向URI(通过运行logRedirectUri())
  7. 将重定向URI粘贴到云平台控制台,然后点击“保存”。
  8. 我收到此链接显示的错误(读取"您无权执行此操作。

    Request URI error

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

1 个答案:

答案 0 :(得分:2)

以下是您可以尝试的一些事项。

第一步

网络应用api

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

enter image description here

然后选择Web应用程序选项。

enter image description here

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

enter image description here

打开新API并获取客户端ID和密码。

从您的应用中粘贴到api重定向。

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

第二步

身份验证和重定向

接下来的一点很棘手,可能需要一些摆弄。

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

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()
    }
  });
  // ...
}