Для пользователей, которые разрешили службе получать доступ к своим данным, я хотел бы реализовать функцию для извлечения и обработки этих данных.Как получить данные пользователя из API Google?
Когда пользователь выполняет проверку подлинности в первый раз, появляется следующий экран:
В консоли разработчика Google я создал учетную запись службы, проверяются «Включить Google Apps Domain-Wide Делегирование», и загрузить JSON файл и включить его в следующем коде:
var google = require('googleapis');
var OAuth2 = google.auth.OAuth2;
var fit = google.fitness('v1');
var key = require('../../config/meelio_google_service_account.json');
/*
This file contains following properties:
{
"type": "service_account",
"project_id": "meelio-dev",
"private_key_id": "***",
"private_key": "-----BEGIN PRIVATE KEY-----
***",
"client_email": "[email protected]",
"client_id": "1022202xxx41842",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://accounts.google.com/o/oauth2/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/mfit-205%40meelio-dev.iam.gserviceaccount.com"
}
*/
var oauth2Client = new OAuth2(key.client_id, key.private_key, 'http://localhost:3000/api/auth/google/oauth2callback');
var scopes = ['https://www.googleapis.com/auth/fitness.activity.read',
'https://www.googleapis.com/auth/fitness.activity.write',
'https://www.googleapis.com/auth/fitness.body.read',
'https://www.googleapis.com/auth/fitness.body.write',
'https://www.googleapis.com/auth/fitness.location.read',
'https://www.googleapis.com/auth/fitness.location.write'];
module.exports.listUserDataSourcesTest = function(req, res){
var jwtClient = new google.auth.JWT(key.client_email, null, key.private_key, scopes, null);
jwtClient.authorize(function(err, tokens) {
if (err) {
console.log(err);
return;
}
oauth2Client.setCredentials({
access_token: tokens.access_token
});
// Make an authorized request to list Drive files.
fit.users.dataSources.list({auth: oauth2Client, userId: '104169835623446790746'}, function(err, resp){
console.log(resp);
});
});
}
Когда функция пригодности Google выполняется (fit.user.dataSources.list()) возвращает ошибку:
"Unauthorized access"
Поскольку я не уверен, вызвана ли ошибка неправильными настройками (или другими) или неправильным кодом, я был бы очень благодарен, если бы кто-нибудь мог помочь решить эту проблему, предложив правильный способ получить данные пользователя и/или исправить настройки в консоли разработчика Google.
Спасибо!