0

J'ai développé un client de jeu (Android) et un serveur en utilisant Unity et node.js.Comment puis-je vérifier le jeton GPGS de l'application android sur mon serveur node.js en utilisant le passeport

La fonction de connexion du serveur est implémentée à l'aide de passport.js. C'était simple, donc je ne m'inquiétais de rien. J'étais censé implémenter la fonctionnalité de connexion dans mon jeu en affichant le navigateur de l'application.

Mais il s'avère que les jeux Android ont besoin d'utiliser "Google Play Game Service" pour se connecter à Google. J'ai confus comment utiliser passport.js dans ce cas.

La séquence du login Google OAuth2.0 que je connais est à peu près la suivante.

  1. demande du client de jeu "authentifier" à BPG en utilisant "google-jeux-plugin-pour-unité"
  2. Si le succès se connecter, le client de jeu peut obtenir "le code d'autorisation" en utilisant "GetIdToken()" api.
  3. Le client de jeu envoie ce jeton à mon serveur de jeu.
  4. Le serveur de jeu vérifie le jeton (à partir de l'étape 3) via le service Google API.
  5. Si vous vérifiez la réussite, mon serveur peut obtenir des informations sur l'utilisateur et accéder au jeton.
  6. Connexion complète terminée.

Je me demande comment implémenter step3 et suivantes en utilisant passport.js. Puis-je utiliser passport.js pour implémenter ceci avec seulement la configuration "GoogleStrategy"? Comment?

Répondre

0

J'ai moi-même trouvé une solution. Il y avait quelque chose qui clochait ce que je savais. La séquence de Google OAuth2.0 est juste comme ci-dessus sauf une chose.

Je pensais pouvoir obtenir le "Code d'autorisation" en utilisant "GetIdToken()" api de "google-games-plugin-for-unity". Mais, si je veux obtenir le "Code d'autorisation", j'ai dû utiliser "GetServerAuthCode()", ne pas utiliser "GetIdToken()". Cette description était dans ReadME de "google-games-plugin-for-unity" github. C'est de ma faute si je ne l'ai pas lu en détail.

IdToken et AuthCode ne sont pas identiques, c'est la partie que je ne connaissais pas correctement. Maintenant, le client du jeu peut obtenir le "Code d'Autorisation" en utilisant "GetServerAuthCode()", et le client du jeu envoie l'url pour envoyer ce jeton au serveur de jeu comme ci-dessous (en utilisant "GetServerAuthCode()" get, mais google recommande d'utiliser post)

var _url = "VOTRE: // WEBAPP/REDIRECTION/URL? code =" + PlayGamesPlatform.Instance.GetServerAuthCode();

Le serveur de jeu obtiendra cette URL et le serveur pourra utiliser "passport.authenticate" qui est de la même manière lorsqu'il reçoit l'URL de redirection du navigateur web. Si vos informations d'authentification utilisateur (application android et application Web) sont enregistrées dans le même projet de console API Google, elles partageront les informations d'authentification et la procédure de connexion fonctionnera de la même manière que si vous utilisiez un navigateur.