9

Je souhaite récupérer toutes les connexions privées google d'un utilisateur connecté depuis mon application. J'ai activé Google People et l'API Google Plus. J'ai mis en place la clé d'API d'identification, l'ID de client & secret client. L'URL avec laquelle je suis en train de chercher les utilisateurs de connexions estAccéder aux connexions google à l'aide de l'API google

https://people.googleapis.com/v1/people/me/connections?fields=connections&key=api_key&access_token=access_token 

Aussi, j'utilise la bibliothèque passeport google-oauth, pour obtenir les utilisateurs access_token. Y a-t-il quelque chose qui me manque dans l'URL ci-dessus?

Mon google code auth est

// send to google to do the authentication 
    // profile gets us their basic information including their name 
    // email gets their emails 
    app.get('/auth/google', passport.authenticate('google', { 
     scope: ['profile', 'email','https://www.googleapis.com/auth/contacts.readonly', 'https://www.googleapis.com/auth/contacts'] 
    })); 

    // the callback after google has authenticated the user 
    app.get('/auth/google/callback', 
    passport.authenticate('google', { 
     successRedirect: '/profile', 
     failureRedirect: '/' 
    })); 

Répondre

2

Vous ne l'avez pas mentionné quelle erreur vous obtenez mais en regardant l'URL que vous utilisez je peux vous dire quelques petites choses.

people.connections.list accéder aux données de l'utilisateur privé. Donc, pour un, vous n'avez pas besoin d'ajouter une clé qui est juste utilisée pour accéder aux données publiques. Cependant, avoir les deux ne devrait pas entraîner de message d'erreur.

J'ai testé la demande que vous envoyez et cela fonctionne mais cette demande nécessite que vous vous soyez authentifié avec au moins un des connections scopes.

https://www.googleapis.com/auth/contacts Demande que votre application être lire et à écrire étant donné l'accès aux contacts dans les Google Contacts du utilisateur authentifié. https://www.googleapis.com/auth/contacts.readonly Demande que votre application reçoive un accès en lecture aux contacts dans les contacts Google de l'utilisateur authentifié.

Si ce n'est pas le cas, vous obtiendrez un message d'erreur sans accès.

{ 
    "error": { 
    "code": 403, 
    "message": "Request had insufficient authentication scopes.", 
    "status": "PERMISSION_DENIED" 
    } 
} 
+0

OK. J'ai eu la clé de l'API. Mais avec le access_token que je passe, j'obtiens l'erreur suivante: ** La demande ne contient pas les informations d'authentification requises. Jeton d'accès attendu OAuth 2 google people api **. J'utilise le paquet google-passport-oauth pour obtenir le jeton utilisateur & google-api-nodejs-client pour accéder aux API des gens pour google –

+0

@ParthVyas si vous avez le jeton d'accès, essayez de l'utiliser comme en-tête de votre requête (peut-être 'Authorization:" Bearer "+ accessToken') – BNK

+1

@BNK vous n'avez pas besoin de faire cela en virant & access_token = à la fin de la requête vous faites la même chose. – DaImTo