向Google进行API调用时出错

google-apps-script

126 观看

1回复

126 作者的声誉

我正在Google Apps脚本https://github.com/googlesamples/apps-script-oauth2/blob/master/samples/Smartsheet.gs中使用此OAuth库

并尝试调用Google Site Verification API,但是这样做时出现以下错误:

对于https://www.googleapis.com/siteVerification/v1/token的请求失败,返回了代码500。服务器被截断了:{“错误”:{“错误”:[{“域”:“全局”,“原因”: “ backendError”,“ message”:“ Backend Error”}],“ code”:500,“ message”:“ Backend Error”}}}(使用MutantHttpExceptions选项检查完整响应)(第14行,文件“ Service”)

function run() {
  var service = getiService();
  if (service.hasAccess()) {

    var url = 'https://www.googleapis.com/siteVerification/v1/token';

    var result = UrlFetchApp.fetch(url, {
      'headers': {
        'Authorization' : 'Bearer ' + service.getAccessToken()
      },
      'method': 'GET',

  "site": {
    "identifier": "somedomainname.com",
    "type": "INET_DOMAIN"
  },
  "verificationMethod": "DNS_TXT"

                                   });

 Logger.log(result)   

感谢您的帮助。谢谢

作者: Gela Ram 的来源 发布者: 2017 年 9 月 15 日

回应 1


1

36782 作者的声誉

决定

在我的环境中,您所说的OAuth库无法使用。因此,我自己检索了访问令牌并刷新了令牌,并确认此脚本有效。如果您的环境也无法使用该库,请获取访问令牌并刷新令牌。

如果要使用的端点获取验证令牌https://www.googleapis.com/siteVerification/v1/token,则可以查看参考WebResource: getToken。根据参考,该方法是“发布”。并在处UrlFetchApp.fetch()将请求正文写入payload。将这些内容反映到脚本后,脚本如下所示。

修改后的脚本:

var url = 'https://www.googleapis.com/siteVerification/v1/token';
var requestBody = {
  site: {
    identifier: "somedomainname.com",
    type: "INET_DOMAIN",
  },
  verificationMethod: "DNS_TXT",
};
var result = UrlFetchApp.fetch(url, {
  headers: {'Authorization': 'Bearer ' + service.getAccessToken()}, // In my environment, service.getAccessToken() was changed to access token I retrieved.
  method: 'post',
  payload: JSON.stringify(requestBody),
  contentType: 'application/json',
  muteHttpExceptions: true,
});

结果:

{
  "method": "DNS_TXT",
  "token": "google-site-verification=#####"
}
作者: Tanaike 发布者: 2017 年 9 月 15 日
来自类别的问题 :
32x32