2017-10-06 4 views
2

Ainsi, j'ai réussi à relier le compte d'utilisateur de google à mon agent sur l'API.AI selon ce guide et trouvé answer semblable à ceci. "Profil" et "E-mail" ont été ajoutés en tant que portée client.Obtenir le profil d'utilisateur google étant donné le userID et le jeton d'accès

Maintenant, l'assistant a été l'envoi d'un code d'utilisateur et AccessToken à mon accomplissement webhook, sous originalRequest-> data-> ENTREES> utilisateur

Quelque chose comme ceci:

"user":{ 
    "accessToken":"TWWM**********************bgf", 
    "locale":"en-US", 
    "userId":"AKL*********************exlT" 
} 

Jusqu'à présent, mon accesToken est toujours rendu invalide par Google.

Si je vérifie mon jeton:

https://www.googleapis.com/oauth2/v3/tokeninfo?access_token=TWWM**********************bgf 

Il rend comme invalide

{ 
    "error_description": "Invalid Value" 
} 

Comment puis-je obtenir les informations de profil d'utilisateur de base tel que Prénom, Nom et e-mail indiquée ci-dessus accessToken et UserId?

De quel point de terminaison GoogleApi devrais-je appeler?

Répondre

1

Pour commencer, le champ userId fourni ici n'est pas un identifiant Google. Il s'agit d'un identifiant anonyme, spécifique à l'assistant, qui est destiné à être utilisé pour suivre anonymement une personne entre des sessions, mais que l'utilisateur peut révoquer s'il le souhaite. Il n'est pas utile d'obtenir des informations supplémentaires via OAuth.

Ensuite, gardez à l'esprit lors de vos tests que le accessToken a une durée de vie limitée, généralement d'environ une heure. Si vous testez après cette heure, le point de terminaison auquel vous essayez d'obtenir des informations renverra une erreur. (Et OAuth aime être vague sur ce que l'erreur est en réalité.)

Je ne suis pas sûr que le point final https://www.googleapis.com/oauth2/v3/tokeninfo effectivement accepte un jeton d'accès. Au moins, je n'ai pu trouver aucune documentation disant que c'est le cas. Il est principalement utilisé pour échanger d'autres jetons pour un jeton d'accès.

Vous avez quelques options pour obtenir les informations souhaitées avec les portées que vous avez demandées. (. Et probablement plus que les deux mentionnés ici) Dans ces deux cas, vous auriez passé le accessToken dans un en-tête HTTP Authorization:

Authorization: Bearer TWWM**********************bgf 

Utilisation du Google People API que vous souhaitez utiliser la méthode people.get. Pour obtenir seulement les champs d'adresse de nom et votre email, vous pouvez utiliser une URL telle que

https://people.googleapi.com/v1/people/me?personFields=names,emailAddresses 

Le plus.people.get est similaire, mais renvoie les informations dans un format différent. Dans ce cas, vous utilisez une URL telle que

https://www.googleapis.com/plus/v1/people/me 
+0

« Il est principalement utilisé pour échanger d'autres jetons pour un jeton d'accès » le point final d'information jeton est utilisé uniquement pour obtenir des informations sur un 'access_token',' id_token 'ou' token_handle' (explorateur d'API [ici] (https://developers.google.com/apis-explorer/#p/oauth2/v2/oauth2.tokeninfo)). La plupart du temps, il est utilisé pour vérifier la validité d'un jeton –