2011-01-08 53 views
0

我今天一直在玩OAuth,并在API上实现它。到目前为止,我正在使用iPhone应用程序使用我的API的服务,但我仍然希望这样做,但是由于我添加了OAuth,因此使用它变得越来越困难,而且我正面临一些问题。使用OAuth公开我的API并将其用于iPhone应用程序

以下是我有:

  • 提供商侧
    • 一个小页面提供密钥和私有密钥对消费者
    • 一个request_token页给令牌给消费者
    • 的授权页面授予用户授权使用令牌的权力
    • 最后,使用token_access页面来更改访问令牌中的请求令牌以访问我的A PI
  • 在消费者方面,有:
    • 消费者键(通过页面上的提供方产生)
    • 消费者密钥(通过页面上的提供方产生)

这是我可以没有任何问题做:

  • 获得令牌的请求
  • 使用户授权令牌

当我试图此令牌更改为访问令牌我有一个错误:

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)。有没有什么,这个框架做错了,让我得到这些错误?

感谢您的回答!

马丁

回答

0

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

相关问题