Tôi cuối cùng cũng đã tìm được giải pháp cho vấn đề này !!! Đây là giải pháp :)
Giả sử bạn đã có tài khoản Google Analytics có dữ liệu trang web chẳng hạn như lượt xem và đã cài đặt mô-đun request và googleapis.
Trước tiên, bạn cần tạo tài khoản Google console tại console.developers.google.com.
Tại Google console:
- Tạo một dự án với một tên phù hợp ví dụ dashboard1.
- Mở API & Xác thực từ menu bên trái -> mở tab API -> bật API phân tích.
- Mở tab thông tin xác thực -> tạo id ứng dụng khách mới -> chọn tài khoản dịch vụ
- Khóa phải tự động tải xuống -> nhấp vào khóa và làm theo hướng dẫn -> mật khẩu mặc định là "không cần lưu ý" -> sau đó xuất ra tệp .pem
- Tài khoản dịch vụ sẽ có địa chỉ email, ví dụ: [email protected]
Bây giờ đi đến phân tích tài khoản Google tại www.google.com/analytics:
Trong công việc bảng điều khiển (phía máy chủ sử dụng nodejs):
Sử dụng mã này:
var fs = require('fs'),
crypto = require('crypto'),
request = require('request'); // This is an external module (https://github.com/mikeal/request)
var authHeader = {
'alg': 'RS256',
'typ': 'JWT'
},
authClaimSet = {
'iss': '#######SERVICE ACCOUNT EMAIL GOES HERE#######', // Service account email
'scope': 'https://www.googleapis.com/auth/analytics.readonly', // We MUST tell them we just want to read data
'aud': 'https://accounts.google.com/o/oauth2/token'
},
SIGNATURE_ALGORITHM = 'RSA-SHA256',
SIGNATURE_ENCODE_METHOD = 'base64',
GA_KEY_PATH = '#######DIRECTORY TO YOUR .PEM KEY#######', //finds current directory then appends private key to the directory
gaKey;
function urlEscape(source) {
return source.replace(/\+/g, '-').replace(/\//g, '_').replace(/\=+$/, '');
}
function base64Encode(obj) {
var encoded = new Buffer(JSON.stringify(obj), 'utf8').toString('base64');
return urlEscape(encoded);
}
function readPrivateKey() {
if (!gaKey) {
gaKey = fs.readFileSync(GA_KEY_PATH, 'utf8');
}
return gaKey;
}
var authorize = function(callback) {
var self = this,
now = parseInt(Date.now()/1000, 10), // Google wants us to use seconds
cipher,
signatureInput,
signatureKey = readPrivateKey(),
signature,
jwt;
// Setup time values
authClaimSet.iat = now;
authClaimSet.exp = now + 60; // Token valid for one minute
// Setup JWT source
signatureInput = base64Encode(authHeader) + '.' + base64Encode(authClaimSet);
// Generate JWT
cipher = crypto.createSign('RSA-SHA256');
cipher.update(signatureInput);
signature = cipher.sign(signatureKey, 'base64');
jwt = signatureInput + '.' + urlEscape(signature);
// Send request to authorize this application
request({
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
uri: 'https://accounts.google.com/o/oauth2/token',
body: 'grant_type=' + escape('urn:ietf:params:oauth:grant-type:jwt-bearer') +
'&assertion=' + jwt
}, function(error, response, body) {
if (error) {
console.log(error);
callback(new Error(error));
} else {
var gaResult = JSON.parse(body);
if (gaResult.error) {
callback(new Error(gaResult.error));
} else {
callback(null, gaResult.access_token);
console.log(gaResult);
console.log("Authorized");
###########IF IT REACHES THIS STAGE THE ACCOUNT HAS BEEN AUTHORIZED##############
}
}
});
};
var request = require('request'),
qs = require('querystring');
authorize(function(err, token) {
if (!err) {
// Query the number of total visits for a month
############requestConfig################
var requestConfig = {
'ids': 'ga:#######PROJECT ID GOES HERE#######',
'dimensions': 'ga:country',
'metrics': 'ga:users',
'sort': '-ga:users',
'start-date': '2014-04-08',
'end-date': '2014-04-22',
'max-results': '10'
};
request({
method: 'GET',
headers: {
'Authorization': 'Bearer ' + token // Here is where we use the auth token
},
uri: 'https://www.googleapis.com/analytics/v3/data/ga?' + qs.stringify(requestConfig)
}, function(error, resp, body) {
console.log(body);
var data = JSON.parse(body);
console.log(data);
});
}
});
NHỚ ĐẾN ĐẦU VÀO BẠN ĐANG RIÊNG EMAIL DỊCH VỤ TÀI KHOẢN, GA_KEY_PATH VÀ IDS
Bạn có thể phân tích dữ liệu Google bằng cách thay đổi reque stConfig. Tôi đã sử dụng công cụ truy vấn Google Analytics này để trợ giúp tôi: http://ga-dev-tools.appspot.com/explorer/
Dữ liệu sau đó sẽ được xuất trong bảng điều khiển.
Hope this helps :)
Theo hiểu biết của tôi, bạn không thể sử dụng tài khoản dịch vụ có JavaScript. Điều này rất có thể là do vấn đề bảo mật. Tôi đề nghị chuyển sang ngôn ngữ kịch bản lệnh phía máy chủ – DaImTo
Ok, chúc mừng! Tôi sẽ tiến hành nghiên cứu thêm một chút và đăng các phát hiện của tôi ở đây! – smj2393