使用OAuth ...我不明白。我应该做些什么?

时间:2009-10-02 23:04:12

标签: api oauth

好的,所以我尝试使用OAuth(不是我的选择),我不太明白。

我想以特定用户身份访问API。我想我需要获得一个令牌,然后以某种方式发送它...但这很奇怪。我阅读了文档,我得到了很大的概念,但我没有看到如何实际使用它。

以下是我正在尝试连接的网站上的数据:

Consumer Key
Consumer Secret
Request Token URL
Access Token URL
Authorize Url

我必须承认我完全无能为力,所以任何指针都会有所帮助。

1 个答案:

答案 0 :(得分:4)

对于初学者,请阅读http://oauth.net/core/1.0a它包含您需要知道的所有内容(至少就它们如何组合在一起而言 - 您的实现将是您编写的使用规范的内容)

在较高级别,请求流将起到这样的作用:

  • 从您的应用向OAuth定义的提供商的请求令牌网址发出请求(包括签名生成请求的签名哈希并将其作为参数包含)
  • 提供程序发回未经授权的请求令牌 - 这是当前oauth请求生命周期的单一用途标识符。
  • 您的应用将用户重定向到提供商的授权网址,这是提供商直接对用户进行身份验证的位置(例如,使用登录表单,或通过在用户的浏览器中检查提供商网站的Cookie ),提供商还可以要求用户授予其用户帐户访问权限的权限
  • 假设一切顺利,提供商会将用户重定向回您首次将用户发送给提供商进行身份验证时提供的回调网址 - 他们还在网址中包含原始请求令牌 ,以及新的单一用途验证码,用于标识请求令牌已获得授权
  • 您的应用然后向提供商的访问令牌网址发出请求,传递请求令牌,验证码并再次签署请求。
  • 然后,提供程序检查您提交的请求令牌,确保用户先前已经验证过,并检查验证码是否与最初发回的验证码匹配,并且请求令牌尚未交换已经是一个访问令牌。然后,提供商会向您发送一个闪亮的新访问令牌和令牌秘密,供您继续使用
  • 现在您可以实际访问提供商的数据 - 您可以连接到他们公开的任何Web服务并与他们进行交互 - 但您需要签署每个请求以证明您是谁,并且用户已经确定您的应用程序可以对其进行操作代表提供者。请求包括通常的OAuth参数(包括访问令牌),并使用消费者密钥和令牌密钥进行签名。

您只需要执行一次请求/授权/访问舞蹈即可获得访问令牌。一旦你有了它,你可以坚持下去(甚至将它存储在你的数据库中对抗用户),并将其重用于任何未来的请求 - 直到提供者决定令牌已过期或用户明确禁用从应用访问提供商网站的个人资料。

(是的,我知道这是一团糟,但是大多数平台都有用于处理大部分工作的库)