Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何验证android应用程序';使用passport在my node.js服务器上设置GPGS令牌_Node.js_Unity3d_Google Oauth_Passport.js_Google Play Games - Fatal编程技术网

如何验证android应用程序';使用passport在my node.js服务器上设置GPGS令牌

如何验证android应用程序';使用passport在my node.js服务器上设置GPGS令牌,node.js,unity3d,google-oauth,passport.js,google-play-games,Node.js,Unity3d,Google Oauth,Passport.js,Google Play Games,我使用Unity和node.js开发了一个游戏客户端(Android)和服务器 服务器的登录功能是使用passport.js实现的。这很简单,所以我什么都不担心。我应该通过弹出应用程序内浏览器在游戏中实现登录功能 但事实证明,android游戏需要使用“谷歌游戏服务”登录谷歌。在这种情况下,我不知道如何使用passport.js 我知道GoogleOAuth2.0登录的顺序大致如下 游戏客户端使用“google games plugin for unity”向GPGS请求“身份验证” 如果登录成

我使用Unity和node.js开发了一个游戏客户端(Android)和服务器

服务器的登录功能是使用passport.js实现的。这很简单,所以我什么都不担心。我应该通过弹出应用程序内浏览器在游戏中实现登录功能

但事实证明,android游戏需要使用“谷歌游戏服务”登录谷歌。在这种情况下,我不知道如何使用passport.js

我知道GoogleOAuth2.0登录的顺序大致如下

  • 游戏客户端使用“google games plugin for unity”向GPGS请求“身份验证”
  • 如果登录成功,游戏客户端可以使用“GetIdToken()”api获取“授权码”
  • 游戏客户端将此令牌发送到我的游戏服务器
  • 游戏服务器通过谷歌api服务验证令牌(步骤3)
  • 如果验证成功,我的服务器可以获取用户信息和访问令牌
  • 完全登录完成
  • 我想知道如何使用passport.js实现步骤3及以后的步骤。
    我可以使用passport.js来实现这一点,只需“GoogleStrategy”配置吗?怎么做?

    我自己找到了解决办法。我所知道的有些不对劲。Google OAuth2.0的顺序与上面一样正确,只是有一点不同

    我想我可以通过使用“google games plugin for unity”的“GetIdToken()”api获得“授权码”。但是,如果我想获得“授权码”,我必须使用“GetServerAuthCode()”,而不是使用“GetIdToken()”。这一描述出现在“google games plugin for unity”github的自述中。我没有仔细阅读是我的错

    IdToken和AuthCode不一样,这是我不正确知道的部分。(请参阅的“检索服务器身份验证代码”)

    现在,游戏客户端可以使用“GetServerAuthCode()”很好地获取“授权码”,游戏客户端制作url将此令牌发送到游戏服务器,如下所示。(使用get,但google建议使用post)

    var_url=“YOUR://WEBAPP/REDIRECTION/url?code=“+PlayGamesPlatform.Instance.GetServerAuthCode()

    游戏服务器将获取此url,服务器可以使用“passport.authenticate”,这与从web浏览器获取重定向url的方式相同

    如果您的两个用户身份验证信息(android应用程序和web应用程序)都注册在同一个Google API控制台项目中,它们将共享身份验证信息,并且登录过程将执行与使用浏览器案例相同的操作