web-dev-qa-db-fra.com

Erreur: "message": "Connexion requise" lors de l'utilisation de l'API Youtube Analytics

Je travaille avec l'API YouTube. lorsque j'appuie sur cette URL "https://www.googleapis.com/youtube/analytics/v1/reports?ids=channel%3D%3DMINE&start-date=2015-01 -01 & end-date = 2016-01-31 & metrics = likes% 2Cdislikes & key = {Clé API} "

ça donne 401

{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "required",
    "message": "Login Required",
    "locationType": "header",
    "location": "Authorization"
   }
  ],
  "code": 401,
  "message": "Login Required"
 }
}

mais j'ai frappé dans l'explorateur " https://developers.google.com/apis-Explorer/ ?" ça marche bien.
Comment puis-je faire fonctionner la première demande?

16
Kishore

Dans votre demande, vous envoyez clé = {votre clé} pour un jeton d'accès, vous devez envoyer access_token = {votre jeton d'accès oauth2}

Remarque: la clé est utilisée pour les demandes publiques. le jeton d'accès est destiné aux demandes authentifiées.

19
DaImTo

Si quelqu'un d'autre utilisant l'authentification JWT sur une API Google bute sur cette question (par exemple lors de l'utilisation de comptes de service), assurez-vous d'inclure auth: <your jwtClient> dans votre appel API, comme:

D'abord, récupérez le jeton:

// Configure JWT auth client
var privatekey = require("./<secret>.json")
var jwtClient = new google.auth.JWT(
  privatekey.client_email,
  null,
  privatekey.private_key,
  ['https://www.googleapis.com/auth/drive']
);

// Authenticate request
jwtClient.authorize(function (err, tokens) {
  if (err) {
    return;
  } else {
    console.log("Google autorization complete");
  }
});

Ensuite, appelez l'API (mais n'oubliez pas le auth:jwtClient partie)

drive.files.create({
    auth: jwtClient,
    resource: {<fileMetadata>},
    fields: 'id'
  }, function (err, file) {
    if (err) {
      // Handle error
    } else {
      // Success is much harder to handle
    }
});
4
David Salamon