Я реализовал 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);
В случае вопросадля кого-то не очевидно: что я здесь делаю не так?
Спасибо за ваш вклад ... Я борюсь с этим некоторое время сейчас ...