ChatGPT解决这个技术问题 Extra ChatGPT

什么是访问令牌与访问令牌秘密和消费者密钥与消费者秘密

我使用 Oauth 已经有一段时间了,但从未完全确定这四个术语之间的区别(以及每个术语的功能)。我经常看到(例如在 Twitter Public API 中)

Consumer key:

Consumer secret:

Access token:

Access token secret:

领域,但我从来不知道他们在做什么。我知道 Oauth 能够授权应用程序(让它们代表用户行事),但我不明白这四个授权条款之间的关系,并希望得到解释。

基本上,我不确定访问令牌或令牌秘密是如何生成的,它们存储在哪里,以及它们彼此之间或与消费者密钥和秘密之间的关系。

谢谢


C
Community

消费者密钥是服务提供者(Twitter、Facebook 等)向消费者(希望访问服务提供者上的用户资源的服务)颁发的 API 密钥。这个密钥是用来识别消费者的。

消费者秘密是消费者“密码”,它与消费者密钥一起用于向服务提供者请求访问(即授权)用户的资源。

访问令牌是服务提供者在消费者完成授权后颁发给消费者的东西。该令牌定义了消费者对特定用户资源的访问权限。每次消费者想要从该服务提供者访问用户数据时,消费者都会在对服务提供者的 API 请求中包含访问令牌。

希望清除它。我建议浏览 oAuth 2.0 spec 的开头部分。这真的很翔实。


我没有得到的是,在我的 twitter 应用程序中,所有这些都已经提供(这意味着我不必通过服务器进行身份验证来获取访问令牌,因为我在使用 twitter 注册应用程序时就拥有了。我以为您说我需要在获得访问令牌之前进行身份验证?
Twitter 允许您为自己(特别是您的帐户)生成访问令牌,以便您可以使用它进行测试。但是,对于使用您的应用程序的每个其他用户,只有在用户通过身份验证后才能获取访问令牌(针对该用户)。
如果您要尝试从用户 Twitter 帐户获取信息,您是否必须让他们每次都登录/进行身份验证?您可以保存哪些信息(令牌/密钥)以供将来请求? -- 你可以使用相同的访问令牌/访问密钥吗?
@HenSapir,我不同意您对“访问令牌秘密”的描述。我不知道这是什么意思,这不是一个标准术语,但我知道“访问令牌秘密与访问令牌一起发送”不是这种情况。它不是。只有他的访问令牌被发送。我怀疑有人在意思是“访问令牌,这是一个秘密”时写了“访问令牌秘密”
请注意,“消费者”一词已经过时了。 OAuth 规范使用术语“客户端”。这在 tools.ietf.org/html/rfc5849 的第 1.1 节中有说明
j
jyfar

有两种类型的身份验证,第一种称为身份验证,它使用使用者密钥和使用者秘密来识别此客户端并确保它是有效帐户,第二种称为授权,它允许资源服务器识别哪种类型在您有权对数据或我们所说的资源执行的操作中,此操作使用访问令牌和访问令牌秘密。

有关更多详细信息,请查看来自 google 的有用幻灯片:

https://docs.google.com/presentation/d/1KqevSqe6ygWVj4U-wlarKU7-SVR79x-vjpR4gEc4A9Q/edit?pli=1#slide=id.g1697c74a_1_14