Node.js 我可以使用passport google回调对android/ios用户进行身份验证吗?

Node.js 我可以使用passport google回调对android/ios用户进行身份验证吗?,node.js,authentication,passport.js,google-signin,Node.js,Authentication,Passport.js,Google Signin,我有一个node.js服务器,它使用google-passport-oauth2进行身份验证。我的服务器端代码如下所示: 我认为/auth/google会重定向到google的登录,当收到权限时,google配置文件和令牌会发送到回调/auth/google/callback 现在我正在制作一个android应用程序,它希望通过这个API进行身份验证。我正在使用在google端进行身份验证。现在,我的安卓应用程序有了个人资料和令牌,并希望 我试着用和(不确定区别…)来做这件事,但无论出于什么原因

我有一个node.js服务器,它使用google-passport-oauth2进行身份验证。我的服务器端代码如下所示:

我认为
/auth/google
会重定向到google的登录,当收到权限时,google配置文件和令牌会发送到回调
/auth/google/callback

现在我正在制作一个android应用程序,它希望通过这个API进行身份验证。我正在使用在google端进行身份验证。现在,我的安卓应用程序有了个人资料和令牌,并希望

我试着用和(不确定区别…)来做这件事,但无论出于什么原因,它都不起作用。现在我正在考虑其他的可能性,比如node.js的Google客户端API库,但它看起来很庞大。还有tokeninfo端点,它涉及一个额外的请求和更多的延迟。或者我应该看一下《快速jwt》

突然,我想知道。。。难道我不能将代币从我的android应用程序传递到服务器上的
auth/google/callback
?这会让事情变得简单一点。我想这一定是白日梦,因为我还没有找到任何关于做这件事的信息。但是如果可能,我应该如何格式化请求中的令牌/配置文件数据,以便
passport.authenticate()
方法识别它?(JSON、表单数据、标题)


如果不能做到这一点,我将建议为节点提供有良好文档记录的令牌验证库

我仍然不知道如何重用
google-passport-oauth2
路由,但我确实找到了如何使用passport-google-id-token验证google的idToken

说:

此路由的post请求应该包含一个JSON对象 密钥id_令牌设置为客户端从Google收到的令牌(例如。 成功登录Google+后)

但它仅在作为查询字符串发送时有效(GET或POST有效)

https://localhost:8888/auth/googletoken?id_token=xxxxxxxxxx

我知道这不是最安全的方法,但我以后会处理这个问题

编辑:事实证明,如果没有客户端ID(在你的应用程序中),令牌是无用的,所以可以通过querystring发送它


编辑2:一个
googleid令牌
devs,只有在安装了
body解析器
的情况下才会收到JSON

我的处境和你一样。事情进展如何?恐怕这仍然是我正在使用的方法。如果你有什么想法,请告诉我。我甚至无法让它发挥作用。由于某些原因,当我使用查询字符串中的令牌进行post或get时,我只是得到了无效的\u令牌……显然,我在url中访问了\u令牌,而不是id\u令牌。谷歌说把它放在这里的查询字符串中,所以我认为我们不应该担心。是的,看起来像。这很好:现在我不需要修复任何东西。我仍然有一些问题,您是否同时使用
passport-google-oauth
passport-google-plus-token
在不同的路线上运行。如果我只使用
passport-google-plus-token
如何在浏览器中工作(不是Android或iOS应用程序)。我从未使用过
passport-google-plus-token
app.get('/auth/google',
    passport.authenticate('google', { scope: 
        [ 'https://www.googleapis.com/auth/plus.login',
        , 'https://www.googleapis.com/auth/plus.profile.emails.read' ] }
));

app.get( '/auth/google/callback', 
    passport.authenticate( 'google', { 
        successRedirect: '/auth/google/success',
        failureRedirect: '/auth/google/failure'
}));