首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Scribe构建oauth登录

用Scribe构建oauth登录
EN

Stack Overflow用户
提问于 2014-01-14 20:09:08
回答 1查看 536关注 0票数 0

我读了太多的页面,尝试了抄写示例,但是我忽略了最重要的一点-- oauth身份验证的唯一和持久的用户id是什么?

我想要实现的网站,用户可以登录到谷歌,FB,twitter等。我希望这个流程是:

  1. servlet向选定的授权提供程序请求令牌
  2. servlet构造授权URL并在那里重定向用户
  3. 用户授予权限
  4. 授权服务重定向到回调,并将验证器作为参数传递。
  5. 回调的servlet向授权提供程序请求访问令牌

现在,我可以在提供者的API中使用此访问令牌,例如浏览google驱动器或发布恶意tweet。很好,但我想要的只是获得某种id,可以存储在数据库中,并将其与用户帐户相关联。所以下次用户来的时候,我可以认出他。

我不认为访问令牌是我想要的。我运行了抄写示例,每个调用都会改变这个值。

我是否应该找到一个提供程序API来返回用户的登录并在他每次登录时调用它?我不喜欢这个想法,因为在我看来,每个登录都是额外的HTTP连接。例如,google驱动器示例将返回一堆数据,而我所需要的只是几个字符。我想我错过了一些重要的观点。还是真的是这样设计的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-17 14:26:36

代币是不透明的。它们不包含用户信息。在这种情况下,每个人都会使用USER_IDACCESS_TOKEN来保存一个单独的数据库,所以当用户登录时,您可以获取它的访问令牌。如果您登录到多个服务,可能还需要一个SERVICE_NAME来将twitter与google令牌分开。

编辑

OAuth不是身份验证或登录协议,它的设计不是这样的,虽然您可以通过即席扩展获得用户身份(推特在访问令牌响应上返回user_id )或进行进一步的请求,但它始终是一个黑客。

也许更适合你的需求是OpenID (不幸的是,抄写员在这里帮不了你)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21122979

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档