我正在尝试在快递/ React / d3项目中调用Google AnalyticsAPI。我已经接近完成所有这些工作但是我仍然需要处理jwtClient上的异步回调以进行GA API调用。正如您将在我的代码中看到的那样,我使用bluebird
和Cannot read property 'refreshToken_' of undefined
来处理我的jwtClient但是我遇到了以下错误:
var google = require ("googleapis");
var key = require ('./client_id.json');
const Promise = require('bluebird');
var authorizationPromise;
const VIEW_ID = 'ga:80820965';
let jwtClient = new google.auth.JWT(
key.client_email,
null,
key.private_key,
['https://www.googleapis.com/auth/analytics.readonly'],
null
);
authorizationPromise = Promise.promisify(jwtClient.authorize)()
.then(function (err, tokens) {
if (err) {
throw new Error(err);
}
return google.analytics('v3');
})
.catch(function(err) {
console.log(err);
});
var queryData = function() {
authorizationPromise.then(function(analytics) {
analytics.data.ga.get({
'auth': jwtClient,
'ids': VIEW_ID,
'metrics': 'ga:uniquePageviews',
'dimensions': 'ga:pagePath',
'start-date': '30daysAgo',
'end-date': 'yesterday',
'sort': '-ga:uniquePageviews',
'max-results': 10,
}, function (err, response) {
if (err) {
console.log(err);
return;
}
console.log(JSON.stringify(response, null, 4));
});
});
};
module.exports = {
queryData
};
由于我还是初学者,我只是在发现承诺的概念,我会喜欢一些帮助。
这是我的代码;
tokens
有人帮我写了这段代码,但我真的不明白这个<root>
<element>
<attributes>
<a>1</a>
<b>y</b>
<c>n</c>
<attribute>
<attributes>
<a>2</a>
<b>j</b>
<c>m</c>
<attribute>
<attributes>
<a>3</a>
<b>y</b>
<c>n</c>
<attribute>
<attributes>
<a>4</a>
<b>y</b>
<c>n</c>
<attribute>
<element>
<element2>
</element2>
</root>
**XMl2**:
<root>
<element>
<attributes>
<a>1</a>
<b>y</b>
<c>n</c>
<attribute>
<attributes>
<a>3</a>
<b>y</b>
<c>n</c>
<attribute>
<attributes>
<a>4</a>
<b>y</b>
<c>n</c>
<attribute>
<element>
<element2>
</element2>
</root>
变量......
感谢。
答案 0 :(得分:1)
尝试更改
Promise.promisify(jwtClient.authorize)()
到
Promise.promisify(jwtClient.authorize, {context:jwtClient})()
另外,.then(function(err,token)
应该只是.then(function(tokens)
,因为错误由.catch
处理