我可以使用passport-google回调来验证android / ios用户吗?

时间:2016-01-30 21:04:45

标签: node.js authentication passport.js google-signin

我有一个node.js服务器,使用google-passport-oauth2进行身份验证。我的服务器端代码看起来像the documentation

WebView

我认为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' })); 重定向到Google的登录信息,并且在收到权限后,Google个人资料和令牌会被发送到回调/auth/google

现在我正在制作一个想要使用此API进行身份验证的Android应用。我在谷歌的最后使用directions for integrating Google Sign-In进行身份验证。现在我的Android应用程序具有配置文件和令牌,并希望verify it with my server

我已尝试使用passport-google-tokenpassport-google-id-token(不确定区别......),但无论出于何种原因它都无法正常工作。现在,我正在寻找其他可能性,例如node.js的Google Client API库,但它看起来很笨重。然后是tokeninfo端点,它涉及额外的请求和更多的延迟。或许我应该看看/auth/google/callback

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

如果无法做到这一点,我会为节点明确记录的令牌验证库提出建议......

1 个答案:

答案 0 :(得分:4)

我仍然不知道重用google-passport-oauth2路线,但我确实弄清楚如何使用passport-google-id-token验证Google的idToken。

The documentation说:

  

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

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

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

我有a feeling这不是最安全的方法,但我稍后将不得不处理。

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

编辑2:其中一个google-id-token开发人员has reminded me只有在安装body-parser后才会收到JSON。