"Ваш заголовок авторизации здесь", что это? - PullRequest
4 голосов
/ 15 сентября 2011

Я реализовал 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 Ответ

1 голос
/ 15 сентября 2011

Я считаю, http://code.google.com/apis/storage/docs/authentication.html - это то, что вы ищете :)

...