0

我今天一直在玩 OAuth,并在我的 API 上实现了它。到目前为止,我正在使用 iPhone 应用程序使用我的 API 服务,我仍然想这样做,但自从我添加了 OAuth 后,使用它变得越来越难,而且我遇到了一些问题。

这是我所拥有的:

  • 提供方
    • 一个向消费者提供密钥和密钥的小页面
    • 向消费者提供令牌的 request_token 页面
    • 授权页面,赋予用户授权使用令牌的权力
    • 最后是一个 token_access 页面,用于更改访问令牌中的请求令牌以访问我的 API
  • 在消费者方面,有:
    • 消费者密钥(由提供者端的页面生成)
    • 消费者密钥(由提供者端的页面生成)

这是我可以毫无问题地做的事情:

  • 获取请求令牌
  • 让用户授权令牌

当我尝试将此令牌更改为访问令牌时,出现错误:

OAuthException2: Signature verification failed (HMAC-SHA1)

似乎我在某个地方遗漏了一些东西,但我找不到什么!这是我在日志中发现的其他一些有用的信息:

从消费者收到:

Accept: */*
Accept-Encoding: gzip, deflate
Accept-Language: en-us
Authorization: OAuth realm="", oauth_consumer_key="55af183bbbc2c386de3d0cb82a8bc4aa04d2883f9", oauth_token="4ba900b2cb3a6a67c13d0b089874649504d28c069", oauth_signature_method="HMAC-SHA1", oauth_signature="UKJXUjT4ZpEDeWFDVl7%2BUiqOids%3D", oauth_timestamp="1294516337", oauth_nonce="72D5BE27-D4DF-4C93-942F-96DCBCAB3509", oauth_version="1.0"
Connection: keep-alive
Cookie: PHPSESSID=676e088f8f13d7a1bb61d2437ee0b2a6
Host: localhost:8888
User-Agent: DearStranger/1.0 CFNetwork/485.12.7 Darwin/10.6.0

供应商的回答:

X-Powered-By: PHP/5.3.2
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Type: text/plain

OAuth Verification Failed: Verification of signature failed (signature base string was "GET&http%3A%2F%2Flocalhost%3A8888%2FDearStranger%2Fwebservices%2Foauth%2Faccess_token.php&oauth_consumer_key%3D55af183bbbc2c386de3d0cb82a8bc4aa04d2883f9%26oauth_nonce%3D72D5BE27-D4DF-4C93-942F-96DCBCAB3509%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1294516337%26oauth_token%3D4ba900b2cb3a6a67c13d0b089874649504d28c069%26oauth_verifier%3D1234%26oauth_version%3D1.0"). with  Array
(
    [0] => dd918316d0190cf48d6bd6028ecbd9fc
    [1] => ec0390f4ce6bbbe6a5f13a651f8b95ff
    [2] => request
)

我在 iPhone 端使用 OAuthConsumer (http://code.google.com/p/oauthconsumer)。这个框架有没有做错什么让我得到这些错误?

感谢您的回答!

马丁

4

1 回答 1

0

我终于发现我没有以正确的方式使用 iPhone 的 OAuthConsumer 框架。我试图以与 Twitter API 相同的方式使用它,但我的服务器公开没有与 Twitter 相同的规范。

于 2011-01-11T15:25:05.330 回答