2009-10-02 86 views
2

好吧,所以我尝试使用OAuth(不是我的选择),我不太明白。使用OAuth ...我不明白。我应该做些什么?

我想以特定用户的身份访问API。我想我需要得到一个令牌然后发送它......但这很奇怪。我阅读了文档,我了解了这个重要概念,但我没有看到如何真正使用它。

下面是我从网站我试图连接到具有数据:

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

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

+0

中多数平台的OAuth库,抽象出了很多的痛苦。你在哪个平台上编码?将使答复更容易。 – madlep 2009-10-03 08:24:42

+0

我试图让它与Google小工具一起工作 – marcgg 2009-10-03 19:42:33

+0

因此,作为托管在小工具容器中的Javascript小工具?在这种情况下,请阅读http://wiki.opensocial.org/index.php?title=Introduction_to_makeRequest,其中记录了gadgets.io.makeRequest调用 - 它会为您处理大量的oauth混乱。你仍然需要在容器中注册密钥/秘密一些方法,这对于每个容器都是不同的(通过电子邮件发送,或者在安装小配件等时在配置web表单中) – madlep 2009-10-04 10:06:51

回答

4

对于初学者来说,阅读了关于http://oauth.net/core/1.0a它包含了你需要知道的一切(至少在这一切是如何结合在一起的术语 - 您的实现将是你写的使用规范的东西)

在高级别,请求的流程将工作是这样的:

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

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

(是的,我知道这是一个烂摊子,但也有库大多数平台来处理最繁重的工作)