Node.js 我可以使用passport google回调对android/ios用户进行身份验证吗?
我有一个node.js服务器,它使用google-passport-oauth2进行身份验证。我的服务器端代码如下所示: 我认为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端进行身份验证。现在,我的安卓应用程序有了个人资料和令牌,并希望 我试着用和(不确定区别…)来做这件事,但无论出于什么原因
/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'
}));