我正在研究Magic Mirror模块。这是我第一次使用节点,我觉得我做错了。但我无法通过谷歌解决这个问题并尝试解决问题。
我使用了Hello Analytics template,当我开始使用它时它起作用了。但是我的代码只是粘贴在节点代码下面,我知道这不是它应该是怎样的。所以我重新编写了代码,但现在它已不再适用了。我可能犯了一些错误,但我在javascript控制台中的代码上没有任何错误。
我总结了我的所作所为:
如果函数queryReports
在节点框架之外,它按预期工作并输出数据。但每当我尝试将其合并到节点代码中时,它只会抛出401.这意味着它缺少验证我的用户帐户的凭据。我已经使用OAuth2按钮登录,它说我已经被烧了。
谁能告诉我我做错了什么? 以下是该模块的代码:
/* global Module */
/* Magic Mirror
* Module: MMM-ga GoogleAnalytics module
*
* By Skippy Skefnietof http://www.skippyweb.nl
* MIT Licensed.
*/
Module.register("MMM-ga",{
// Default module config.
defaults: {
text: 'test text',
startDate: '2017-02-12',
endDate: 'today',
viewID: '37419435'//'ga:37419435'
},
//getScripts: function() {
//return ['https://apis.google.com/js/client:platform.js'];
//},
getStyles: function() {
return ["MMM-ga.css"];
},
// Override dom generator.
getDom: function() {
var MMMga = document.createElement("div");
MMMga.className = "MMM-ga" + this.config.text;
var ga = document.createElement("p");
ga.setAttribute('data-onsuccess','this.queryReports');
ga.className = "g-signin2";
MMMga.appendChild(ga);
var gascript = document.createElement("script");
gascript.src = "https://apis.google.com/js/client:platform.js";
MMMga.appendChild(gascript);
var debugtxt = document.createElement("textarea");
debugtxt.id = "query-output";
MMMga.appendChild(debugtxt);
return MMMga;
//var queryReports = this.queryReports();
},
notificationReceived: function(notification, payload, sender) {
if (notification === "DOM_OBJECTS_CREATED") {
this.queryReports();
}
},
queryReports: function() {
console.log('!!!!!!!!LOOK AT ME I AM MR MEESEEKS! LOOK AT ME!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!');
gapi.client.request({
path: '/v4/reports:batchGet',
root: 'https://analyticsreporting.googleapis.com/',
method: 'POST',
body: {
reportRequests: [
{
viewId: this.config.viewID,
dateRanges: [
{
startDate: '7daysAgo',
endDate: 'today'
}
],
metrics: [
{
expression: 'ga:sessions'
}
]
}
]
}
}).then(this.displayResults, console.error.bind(console));
},
displayResults: function(response) {
var formattedJson = JSON.stringify(response.result, null, 2);
document.getElementById('query-output').value = formattedJson;
}
});