De la même manière que dans un article précédent pour Facebook, je vais expliquer comment vérifier, dans une API, qu’un utilisateur s’est authentifié avec Google dans une appli mobile.
La première étape est d’obtenir les client IDs et secrets. Tout est expliqué dans la section Acquiring client IDs and secrets de Google OAuth 2.0 Guide.
On peut trouver ce que doit faire l’appli mobile dans les tréfonds des guides Google, ou plus exactement dans la section Send the ID token to your server de Authenticate with a backend server. En gros, l’appli va authentifier l’utilisateur avec Google et va recevoir le ID token en retour. L’appli doit alors envoyer ce token à l’API.
Dans l’API, on doit décoder le ID token pour obtenir le vrai ID de l’utilisateur. Pour ce faire, nous utiliserons le gem Ruby Signet. Si vous n’utilisez pas Ruby, vous pouvez utiliser une autre librairie que Google propose.
Commençons par initialiser le client OAuth 2.0 :
require 'signet/oauth_2/client'
client = Signet::OAuth2::Client.new(client_id: google_client_id, client_secret: google_client_secret)
Assignons le ID token reçu de l’appli au client que nous venons de créer :
client.id_token = id_token_from_the_app
Nous pouvons enfin décoder le token :
payload = client.decoded_id_token
Le Google ID de l’utilisateur sera dans payload['sub']
si le token a été décodé avec succès.