我无法在任何地方找到如何在Google OAuth中从头到尾查看身份验证,我应该在数据库中存储什么以及如何存储。
我正在处理应用程序,该程序允许用户使用Google帐户登录并授予其Gmail帐户权限,而且我不太确定一切应该如何逐步运行。我有两个想法:
#1
https://www.googleapis.com/auth/userinfo.email
和其他服务(gmail等)access_token
,refresh_token
和id_token
refresh_token
和id_token
存储在数据库id_token
如果用户尝试从其他浏览器或其他PC登录怎么办?每次用户登录我的应用程序时,我都需要更新refresh_token
和id_token
。这是一个很好的解决方案吗?
#2
https://www.googleapis.com
id_token
id_token
存储在数据库id_token
refresh_token
并将其存储在数据库首先。可以两次询问同一域的权限吗?在此解决方案中,每次用户登录应用程序时,我都只需要更新id_token
。
或许有更好的方法进行此类身份验证?
答案 0 :(得分:1)
您要做的是在用户第一次签名时将Type2
与用户的唯一标识符(例如,您可以从Type1
中读取的Google用户ID)一起存储英寸
然后,只要您需要代表用户调用API,就可以在服务器端使用此refresh_token
获取id_token
。
当用户再次访问您的网站并登录时(无论他们使用的是哪种浏览器或设备),您只需将refresh_token
发送到您的服务器,提取用户ID并检查您的数据存储区access_token
已经存在并相应地使用它。
我刚刚在这里写了一篇关于服务器端身份验证的可能场景的文章:http://codingwithgerwin.blogspot.co.at/2015/04/google-sign-in-20-server-side.html(它在服务器端使用Python,但它几乎就是同样适用于PHP)。