我有一个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-token
和passport-google-id-token
(不确定区别......),但无论出于何种原因它都无法正常工作。现在,我正在寻找其他可能性,例如node.js的Google Client API库,但它看起来很笨重。然后是tokeninfo端点,它涉及额外的请求和更多的延迟。或许我应该看看/auth/google/callback
?
突然间,我想知道......我不能将令牌从我的Android应用程序传递到express-jwt
的服务器?这会让事情变得更简单一些。我认为这一定是个梦想,因为我还没有找到任何关于这样做的信息。但是,如果可能,我应该如何格式化请求中的令牌/配置文件数据,以便auth/google/callback
方法识别它? (JSON,表单数据,标题)
如果无法做到这一点,我会为节点明确记录的令牌验证库提出建议......
答案 0 :(得分:4)
我仍然不知道重用google-passport-oauth2
路线,但我确实弄清楚如何使用passport-google-id-token验证Google的idToken。
对此路由的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。