6

Sto lavorando con youtube api. quando ho colpito questo 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= {} API Key"Errore: "messaggio": "Accesso richiesto" quando si utilizza l'API YouTube Analytics

dà 401

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

ma hited nel explorer "https://developers.google.com/apis-explorer/?" funziona bene.
Come posso far funzionare la prima richiesta?

+0

si dovrebbe risolvere la tua domanda questa è una richiesta alla API di analisi di YouTube. Devi essere autenticato per quella richiesta usare Oauth2. – DaImTo

+0

Ho già il token di accesso da Oauth da una media diversa. Ora come ottengo questi dati? –

+0

prova 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&access_token={access token from oauth} – DaImTo

risposta

9

Nella richiesta si invia key = {} la chiave per un token di accesso si dovrebbe essere l'invio access_token = {il tuo OAuth2 token di accesso}

Nota: chiave viene utilizzato per le richieste pubbliche. il token di accesso è per le richieste autenticate.

0

Se qualcun altro utilizzando l'autenticazione JWT su un Google inciampa API su questa questione (ad esempio, quando si utilizzano account di servizio.) Quindi assicurarsi di includere auth: <your jwtClient> nella chiamata API, come:

In primo luogo, ottenere il token:

// 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"); 
    } 
}); 

Poi, chiamare l'API (ma non dimenticate la parte auth:jwtClient)

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