我花了很多时间尝试在Google Fit中创建一个DataSource而没有任何成功。总是,我得到HTTP 500和消息:
“{”error“:{”errors“:[{”domain“:”global“,”reason“:”backendError“,”message“:”Backend Error“}],”code“:500,”消息“:”后端错误“}}”
function testGoogleFitAPI() {
var fitService = getFitService();
if (fitService.hasAccess()) {
var token = fitService.getAccessToken();
var url = "https://www.googleapis.com/fitness/v1/users/me/dataSources";
var dataToCreateDataSource = '{"dataStreamName":"DataSource2","type":"derived","application":{"detailsUrl":"http://script.google.com","name":"GAS to Google Fit Weight Logger Script","version":"1"},"dataType":{"field":[{"name":"weight","format":"floatPoint"}],"name":"com.google.weight"},"device":{"manufacturer":"No Manufacturer Info Available","model":"No Model Info Available","type":"unknown","uid":"123456789","version":"1"}}';
var payload = JSON.stringify(dataToCreateDataSource);
var params = {
"method" : "post",
"headers" : {"Authorization": "Bearer " + token},
"muteHttpExceptions": true,
"contentType" : "application/json",
"payload" : payload
};
try
{
var response = UrlFetchApp.fetch(url, params);
var responseCode = response.getResponseCode();
var responseBody = response.getContentText();
if (responseCode === 200) // Successful API call
{
var responseJson = JSON.parse(responseBody)
}
else
{
Logger.log(Utilities.formatString("Request failed with Web API's HTTP Response: " + responseCode + " (Expected 200)\n HTTP Response Body: " + responseBody));
}
}
catch (e)
{
logToSheet(0, "Error while calling the Web API: \n" + e.name + " on line# " + e.lineNumber + " --> " + e.message);
}
} else {
var authorizationUrl = fitService.getAuthorizationUrl();
Logger.log('Open the following URL and re-run the script: %s', authorizationUrl);
}
}
格式化的有效负载是:
{
"dataStreamName": "DataSource2",
"type": "derived",
"application": {
"detailsUrl": "http://script.google.com",
"name": "GAS to Google Fit Weight Logger Script",
"version": "1"
},
"dataType": {
"field": [
{
"name": "weight",
"format": "floatPoint"
}
],
"name": "com.google.weight"
},
"device": {
"manufacturer": "No Manufacturer Info Available",
"model": "No Model Info Available",
"type": "unknown",
"uid": "123456789",
"version": "1"
}
}
当我在OAuth2 Playground中使用相同的有效负载和从上面的脚本生成的令牌时,数据源已成功创建(HTTP 200)。它无法使用Google Apps脚本。
当我使用OAuth2 Playground创建DataSource时,我可以创建DataSet并成功插入DataPoints。
我想知道在Apps脚本中导致错误的原因是什么?