使用 Google Sign In API 进行 OAuth 后,如何将用户保存到数据库?

jj1*_*111 5 oauth-2.0 google-signin

我的问题类似于我可以在数据库中保存哪些数据来验证使用 Google 登录 API 的用户?

我已经正确构建了 Google Sign In,并且从 API 收到了如下响应:

{  
   "iss":"https://accounts.google.com",
   "at_hash":"xxx",
   "aud":"xxx.apps.googleusercontent.com",
   "sub":"xxx",
   "email_verified":true,
   "azp":"xxx.apps.googleusercontent.com",
   "email":"xxx@gmail.com",
   "iat":xxx,
   "exp":xxx
}
Run Code Online (Sandbox Code Playgroud)

上面的 SO 链接表示保存子字段,因为这是唯一标识符。我可以保存电子邮件/子邮件,没有问题。我的问题是:如果该用户选择这样做,与 OAuth 相比,我如何允许他们下次使用电子邮件/密码表单登录?我想我可以强制他们通过 OAuth 登录,然后验证他们是否已登录并让他们创建密码,但我不知道这是否是最好的方法。

jwi*_*eke 0

仅保证“sub”参数对于“iss”参数是唯一的。所以“iss”和“sub”的组合是全球独一无二的。

如果您必须存储密码,则需要询问用户。某些应用程序为每个用户输入随机的复杂密码,因为某些应用程序框架需要密码。如果他们忘记使用 Google 为您登录,以便您尽职调查为具有电子邮件地址的用户分配临时密码,这可能会有所帮助。

当然,您应该考虑到电子邮件地址在任何给定时间都是全局唯一的,但在某些情况下可以重新分配。