我已经实施了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);
如果某人的问题不明显: 我在这里做错了什么?
感谢您的投入......我现在已经挣扎了一段时间......