2

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

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

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

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

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

4

1 回答 1

4

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

在高层次上,请求流的工作方式如下:

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

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

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

于 2009-10-03T08:52:25.997 回答