Google Buzz API OAuth问题 - 使用Zend_OAuth(PHP)

时间:2010-07-02 14:12:22

标签: php zend-framework oauth buzz

我已经成功获得了access_token,因此这对于3脚流程来说不是问题。

当我尝试使用Buzz API添加新帖子/活动时,问题就出现了......

这是我的要求:

POST /buzz/v1/activities/@me/@self?alt=json HTTP/1.1 
Host: www.googleapis.com 
Connection: close 
Accept-encoding: gzip, deflate 
User-Agent: Zend_Http_Client 
Content-Type: application/json 
Authorization: OAuth 
realm="",oauth_consumer_key="example.com",oauth_nonce="ce29b04ce6648fbb92efc8f 08c1c0091",oauth_signature_method="HMAC- 
SHA1",oauth_timestamp="1277934794",oauth_version="1.0",oauth_token="1%2FcBz o5ckGvCAm3wLWh1SDH3xQNoW-- 
yek1NVfUa1Qqns",oauth_signature="CUezSiMbvxyN1BTeb3uROlIx8gA%3D" 
Content-Length: 86 
{"data":{"object":{"type":"note","content":"posting on Buzz"}}} 

以下是回复:

{"error":{"errors":[{"message":"Unknown authorization header","locationType":"header","location":"Authorization"}],"code":401,"message":"Unknown authorization header"}}

这是我的基本字符串(签名生成的字符串):

POST&https%3A%2F%2Fwww.googleapis.com%2Fbuzz%2Fv1%2Factivities%2F%40me 
%2F%40self&oauth_consumer_key%3Dexample.com%26oauth_nonce 
%3D50acc6b7ac48304ae9301134d6988cdb%26oauth_signature_method%3DHMAC- 
SHA1%26oauth_timestamp%3D1278065599%26oauth_token 
%3D1%252FcBzo5ckGvCAm3wLWh1SDH3xQNoW--yek1NVfUa1Qqns%26oauth_version 
%3D1.0 

我甚至尝试过这个其他基本字符串(添加了alt = json):

POST&https%3A%2F%2Fwww.googleapis.com%2Fbuzz%2Fv1%2Factivities%2F%40me
  %2F%40self%3Falt%3Djson&oauth_consumer_key%3Dexample.com%26oauth_nonce
  %3Dee8704244623bbcc860bf77bfcadeacc%26oauth_signature_method%3DHMAC-
  SHA1%26oauth_timestamp%3D1278069221%26oauth_token
  %3D1%252FcBzo5ckGvCAm3wLWh1SDH3xQNoW--yek1NVfUa1Qqns%26oauth_version
  %3D1.0

我已经尝试了很多工作 - 不知道为什么它总是说'未知的授权标题'...与其他工作相比,标题看起来很好。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

您使用哪个端点来授权请求​​令牌?

developer's guide

  

重要:OAuth流程的一部分   要求您指导用户   Google授权服务   批准您的申请的访问权限。   Google Buzz要求您使用   不同的授权服务   端点,位于   https://www.google.com/buzz/api/auth/OAuthAuthorizeToken.com/buzz/api/auth/OAuthAuthorizeToken

答案 1 :(得分:0)

您应该使用GET或POST方法(取决于您使用的请求)。默认情况下,Zend使用header-method。

$客户端 - >使用setMethod(一个Zend_Http_Client :: GET);