如何使用 Node 服务器验证 Android Google 登录
Posted
技术标签:
【中文标题】如何使用 Node 服务器验证 Android Google 登录【英文标题】:How to authenticate Android Google sign in with Node server 【发布时间】:2016-11-07 16:05:45 【问题描述】:我正在尝试在我的 android 应用上实现 Google 帐户登录并在我的节点服务器中对其进行身份验证。
我按照tutorial 成功在 Android 上实现了 Google 登录按钮,但我不知道如何在我的后端进行身份验证。
从这个documentation,我假设我需要获取并发送getIdToken()
或getServerAuthCode()
,但我不确定我应该发送哪一个,所以投票发送getServerAuthCode()
。
在我的节点服务器部分,我安装了这个library 并使用了这个方法:
var google = require('googleapis');
var plus = google.plus('v1');
var OAuth2 = google.auth.OAuth2;
var oauth2Client = new OAuth2(CLIENT_ID, CLIENT_SECRET, REDIRECT_URL);
// Retrieve tokens via token exchange explained above or set them:
oauth2Client.setCredentials(
access_token: 'ACCESS TOKEN HERE',
refresh_token: 'REFRESH TOKEN HERE'
);
plus.people.get(
userId: 'me',
auth: oauth2Client ,
function(err,response) // handle err and response );
我认为这是正确的方法,但后来我找到了this,我意识到getServerAuthCode()
返回的数据需要换成真正的访问令牌才能从用户那里获取信息。
我的问题是:
1) 我应该从 Android 向 Node 发送哪些数据? (在 Node 上,我得到一些基本信息,例如电子邮件和用户名)。
2) 如果我发送正确的数据,我用于 Node 的库是正确的吗?如果我没有发送正确的数据,您建议我使用哪个库来验证 getIdToken()
。
3) 在节点上,我应该如何交换来自getServerAuthCode()
的数据以获得正确的访问和刷新令牌?
欢迎提供有关如何进行身份验证和示例的任何其他信息。
谢谢。
【问题讨论】:
【参考方案1】:这可能是您正在寻找的解决方案。 https://developers.google.com/identity/sign-in/android/backend-auth
这允许您使用 HTTPS 将 ID 发送回您的服务器。然后,在服务器上,验证 ID 令牌的完整性,并使用令牌中包含的用户信息来建立会话或创建新帐户。..
【讨论】:
以上是关于如何使用 Node 服务器验证 Android Google 登录的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Firebase 身份验证服务并在我们自己的数据库中拥有用户?
如何在 Node/Express 中使用 CAC 对用户进行身份验证
如何使用 aws-amplify 验证 node/express 中的 accessToken?
我可以使用 passport-google 回调来验证 android/ios 用户吗?