我在Google Apps脚本中使用此OAuth库https://github.com/googlesamples/apps-script-oauth2/blob/master/samples/Smartsheet.gs
并尝试拨打Google Site Verification API,但在执行此操作时出现以下错误:
请求https://www.googleapis.com/siteVerification/v1/token返回的代码500失败。截断的服务器响应:{“error”:{“errors”:[{“domain”:“global”,“reason”:“backendError”,“message” :“后端错误”}],“代码”:500,“消息”:“后端错误”}}(使用muteHttpExceptions选项检查完整响应)(第14行,文件“服务”)
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)
感谢您的帮助。 谢谢
答案 0 :(得分:1)
在我的环境中,the OAuth library that you say无法使用。所以我自己检索了访问令牌和刷新令牌,并确认这个脚本有效。如果该库也无法在您的环境中使用,请检索访问令牌和刷新令牌。
如果您想使用https://www.googleapis.com/siteVerification/v1/token
的端点获取验证令牌,则可以看到引用WebResource: getToken
。根据参考文献,该方法是" post"。在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=#####"
}