J'essaie de faire une demande à l'API youtube analytics. et j'ai un peu de mal à faire les demandes pour qu'ils soient acceptés. J'utilise l'API Google Node.js clientYoutube Analytics - Création de requêtes
https://github.com/google/google-api-nodejs-client
et mon code est le suivant
import { Meteor } from 'meteor/meteor';
import google from 'googleapis';
import KEY_FILE from './keyFile.json';
import { CHANNEL_ID } from './channelId.js';
//api's
const analytics = google.youtubeAnalytics('v1');
//fetch youtube analytics
export function youtubeAnalytics(start, end){
//initalise request data
const startDate = `${start.getFullYear()}-${('0'+(start.getMonth()+1)).slice(-2)}-${('0'+(start.getDate())).slice(-2)}`;
const endDate = `${end.getFullYear()}-${('0'+(end.getMonth()+1)).slice(-2)}-${('0'+(end.getDate())).slice(-2)}`;
const scopes = [
'https://www.googleapis.com/auth/youtube',
'https://www.googleapis.com/auth/youtube.readonly',
'https://www.googleapis.com/auth/yt-analytics-monetary.readonly',
'https://www.googleapis.com/auth/yt-analytics-monetary.readonly'
];
//generate authorisation token
var AUTH = new google.auth.JWT(
KEY_FILE.client_email,
null,
KEY_FILE.private_key,
scopes,
null
);
//authorize request
AUTH.authorize(function (err, tokens) {
if (err) {
console.log(err);
return;
}
//create request
const analyticsRequest = {
auth: AUTH,
'start-date': startDate,
'end-date': endDate,
ids: `channel==${CHANNEL_ID}`,
metrics: 'views',
};
//make request
analytics.reports.query(analyticsRequest, function (err, data) {
if (err) {
console.error('Error: ' + err);
return false;
}
if (data) {
console.log(data);
return data;
}
});
});
return false;
}
Meteor.methods({youtubeAnalytics});
Je continue à obtenir l'erreur suivante
Error: Error: Invalid query. Query did not conform to the expectations.
Je pense que pour faire avec ma demande objet
const analyticsRequest = {
auth: AUTH,
'start-date': startDate,
'end-date': endDate,
ids: `channel==${CHANNEL_ID}`,
metrics: 'views',
};
mais tous les exemples que j'ai trouvés disent que cet objet de requête devrait fonctionner. Je l'ai simplifié autant que possible. Ma demande initiale (celle que je veux vraiment) était la suivante.
const analyticsRequest = {
auth: AUTH,
'start-date': startDate,
'end-date': endDate,
ids: `channel==${CHANNEL_ID}`,
metrics: 'views',
dimensions: 'video',
sort: '-views',
'max-results': '200'
}
après que je dois faire une autre demande pour obtenir toutes les informations associées sur les vidéos cotées qui utilise un point de terminaison api différent.
//api's
const youtube = google.youtube('v3');
/*
do processing of analytics data to create batchRequest
which is a string of comma separated video ids
*/
videoRequest = {
auth: AUTH,
part: 'id,snippet',
id: batchRequest;
}
youtubeApiData.search.list(videosRequest, function (err, data) {
if (err) {
console.error('Error: ' + err);
return false;
}
if (data) {
console.log(data);
return data;
}
});
Donc, en résumé
que je dois faire une demande de divers google api de et ai du mal à former la demande donc ils sont acceptés (je n'ai pas passé la première demande d'analyse youtube) .
quelqu'un peut-il me diriger dans la bonne direction?