Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法使用Magic Mirror模块验证Google Analytics Reporting API_Javascript_Node.js_Google Analytics_Magic Mirror - Fatal编程技术网

Javascript 无法使用Magic Mirror模块验证Google Analytics Reporting API

Javascript 无法使用Magic Mirror模块验证Google Analytics Reporting API,javascript,node.js,google-analytics,magic-mirror,Javascript,Node.js,Google Analytics,Magic Mirror,我正在做一个模块。这是我第一次使用node,我想我做错了一些事情。但我不能再通过谷歌和尝试来解决这个问题了 我用过,刚开始的时候它就起作用了。但是我的代码只是粘贴在节点代码下面,我知道这不是它应该是什么样子。所以我重写了代码,但现在它不再工作了。我可能犯了一些错误,但在javascript控制台中我的代码没有任何错误 我将总结我所做的: 我在google的credentials应用程序中为模块创建了一个项目和一个API密钥。我按照hello analytics教程的要求设置了所有内容 我将Cl

我正在做一个模块。这是我第一次使用node,我想我做错了一些事情。但我不能再通过谷歌和尝试来解决这个问题了

我用过,刚开始的时候它就起作用了。但是我的代码只是粘贴在节点代码下面,我知道这不是它应该是什么样子。所以我重写了代码,但现在它不再工作了。我可能犯了一些错误,但在javascript控制台中我的代码没有任何错误

我将总结我所做的:

  • 我在google的credentials应用程序中为模块创建了一个项目和一个API密钥。我按照hello analytics教程的要求设置了所有内容
  • 我将ClientID添加到头部的meta标记中。我把它直接放在index.html文件中。我还添加了另一个必需的元标记
  • 我为我的Analytics帐户创建了一个视图,并复制了下面列出的视图变量。(它后面的注释是表id,因为我不知道需要哪个。)
如果函数
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;

}
});

对不起,代码缩进太草率了,但我主要是在pi上工作,它的编辑器有点糟糕。对不起,代码缩进太草率了,但我主要是在pi上工作,它的编辑器有点糟糕。