我读了太多的页面,尝试了抄写示例,但是我忽略了最重要的一点-- oauth身份验证的唯一和持久的用户id是什么?
我想要实现的网站,用户可以登录到谷歌,FB,twitter等。我希望这个流程是:
现在,我可以在提供者的API中使用此访问令牌,例如浏览google驱动器或发布恶意tweet。很好,但我想要的只是获得某种id,可以存储在数据库中,并将其与用户帐户相关联。所以下次用户来的时候,我可以认出他。
我不认为访问令牌是我想要的。我运行了抄写示例,每个调用都会改变这个值。
我是否应该找到一个提供程序API来返回用户的登录并在他每次登录时调用它?我不喜欢这个想法,因为在我看来,每个登录都是额外的HTTP连接。例如,google驱动器示例将返回一堆数据,而我所需要的只是几个字符。我想我错过了一些重要的观点。还是真的是这样设计的?
发布于 2014-01-17 14:26:36
代币是不透明的。它们不包含用户信息。在这种情况下,每个人都会使用USER_ID,ACCESS_TOKEN来保存一个单独的数据库,所以当用户登录时,您可以获取它的访问令牌。如果您登录到多个服务,可能还需要一个SERVICE_NAME来将twitter与google令牌分开。
编辑
OAuth不是身份验证或登录协议,它的设计不是这样的,虽然您可以通过即席扩展获得用户身份(推特在访问令牌响应上返回user_id )或进行进一步的请求,但它始终是一个黑客。
也许更适合你的需求是OpenID (不幸的是,抄写员在这里帮不了你)
https://stackoverflow.com/questions/21122979
复制相似问题