代码之家  ›  专栏  ›  技术社区  ›  xil3

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

  •  0
  • xil3  · 技术社区  · 14 年前

    我已经成功地获得了一个访问令牌,所以这对三条腿的过程来说不是问题。

    当我尝试使用BuzzAPI添加新的帖子/活动时,问题就开始了…

    这是我的要求:

    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 回复  |  直到 14 年前
        1
  •  0
  •   parserr    14 年前

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

    developer's guide :

    重要:OAuth流程的一部分 要求您将用户引导到 谷歌授权服务 批准对应用程序的访问。 google buzz要求你使用 不同的授权服务 终结点,位于 https://www.google.com/buzz/api/auth/OAuthAuthorizeToken.com/buzz/api/auth/OAuthAuthorizeToken .

        2
  •  0
  •   Artjom Kurapov    14 年前

    您应该使用get或post方法(取决于您使用的请求)。默认情况下,Zend使用Header方法。

    $client->setmethod(zend_http_client::get);