“你的授权标题在这里”,那是什么?

时间:2011-09-15 13:01:36

标签: php google-api oauth-2.0

我已经实施了Google API v3.0,但文档总是告诉您将“您的授权标题放在此处”。

我们应该作为授权标题传递什么值???

但他们从不提及这个价值来自哪里。 从逻辑上讲,我可能是$ _SESSION ['access_token']值,但是当我尝试这个时:

curl_setopt($ressource, CURLOPT_HTTPHEADER, array(
     "GData-Version: 3.0",
     "Authorization: Bearer " . http_build_query(json_decode($_SESSION['access_token']))
     ));

我收到以下错误:

  

未知的授权标题

     

错误401

经过大量搜索,我试图在“OAuth”前加上:

curl_setopt($ressource, CURLOPT_HTTPHEADER, array(
     "GData-Version: 3.0",
     "Authorization: OAuth " . http_build_query(json_decode($_SESSION['access_token']))
     ));

它也不起作用,但至少错误似乎更冗长:

  

令牌无效 - 无效的AuthSub令牌。

     

错误401

那么,他们为什么要谈论AuthSub,AFAIK(我觉得我不太了解),我使用的是OAuth 2.0,而不是AuthSub。

再次搜索该错误会导致我可能出现范围问题(http://www.geoffmcqueen.com/2010/03/14/token-invalid-authsub-token-has-wrong-scope-oauth-google-problem/)。

所以我仔细检查我的范围。 来自config.php apiConfig数组:

'services' => array(
      /* ... */,
      'documentList' => array('scope' => 'https://docs.google.com/feeds/')
    )

请注意,我自己添加了documentList范围。

我的代码:

        $this->authenticate();
        $arrAuth = json_decode($_SESSION['access_token']);
        $authenticationHeader = "Bearer " . $arrAuth->access_token

        $url = "https://docs.google.com" . "/feeds/default/private/full";
        $atomContent = <<<ATOM
<?xml version='1.0' encoding='UTF-8'?>
<entry xmlns="http://www.w3.org/2005/Atom">
  <category scheme="http://schemas.google.com/g/2005#kind"
      term="http://schemas.google.com/docs/2007#folder"/>
  <title>Example Collection</title>
</entry>
ATOM;
        $ressource = curl_init();
        curl_setopt($ressource, CURLOPT_URL, $url);
        curl_setopt($ressource, CURLOPT_HTTPHEADER, array(
             "GData-Version: 3.0",
             "Authorization: {$authenticationHeader}"
             ));
        curl_setopt($ressource, CURLOPT_TIMEOUT, 5);
        curl_setopt($ressource, CURLOPT_POST, 1);
        curl_setopt($ressource, CURLOPT_POSTFIELDS, $atomContent);
        $httpResponse = curl_exec($ressource);

如果某人的问题不明显: 我在这里做错了什么?

感谢您的投入......我现在已经挣扎了一段时间......

1 个答案:

答案 0 :(得分:1)