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

时间:2017-04-29 17:05:36

标签: javascript node.js google-analytics magic-mirror

我正在研究Magic Mirror模块。这是我第一次使用节点,我觉得我做错了。但我无法通过谷歌解决这个问题并尝试解决问题。

我使用了Hello Analytics template,当我开始使用它时它起作用了。但是我的代码只是粘贴在节点代码下面,我知道这不是它应该是怎样的。所以我重新编写了代码,但现在它已不再适用了。我可能犯了一些错误,但我在javascript控制台中的代码上没有任何错误。

我总结了我的所作所为:

  • 我在google的凭据应用中为模块创建了一个项目和一个API密钥。我按照hello analytics教程的要求设置了一切。
  • 我将ClientID添加到头部的元标记中。我将它直接放在index.html文件中。我还添加了其他必需的元标记。
  • 我为自己的Google 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;

}
});

0 个答案:

没有答案