[英]Unknown authorization header error with Buzz API - Using Zend OAuth
Here's the response I keep getting when trying to create a new activity: 这是我在尝试创建新活动时不断得到的响应:
{"error":{"errors":[{"message":"Unknown authorization
header","locationType":"header","location":"Authorization"}],"code":
401,"message":"Unknown authorization header"}}
Here's the request I sent (for debugging): 这是我发送的请求(用于调试):
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="eawp.com",oauth_nonce="ce29b04ce6648fbb92efc8f08c1c0091",oauth_signature_method="HMAC-
SHA1",oauth_timestamp="1277934794",oauth_version="1.0",oauth_token="1%2FcBzo5ckGvCAm3wLWh1SDH3xQNoW--
yek1NVfUa1Qqns",oauth_signature="CUezSiMbvxyN1BTeb3uROlIx8gA%3D"
Content-Length: 86
{"data":{"object":{"type":"note","content":"Using OAuth with Twitter -
PHP Example"}}}
All the other requests to get the access_token worked just fine, but now I'm not too sure why it's not working. 获得access_token的所有其他请求都运行得很好,但现在我不太清楚为什么它不起作用。
** Update **更新
To assist with the debugging a bit more, here is the code in question: 为了帮助调试更多,这里是有问题的代码:
$config = array(
//'requestScheme' => Zend_Oauth::REQUEST_SCHEME_HEADER,
//'version' => '1.0',
//'signatureMethod' => 'HMAC-SHA1',
'callbackUrl' => $callback,
'siteUrl' => $url,
'consumerKey' => $consumerKey,
'consumerSecret' => $consumerPass
);
$statusMessage = $title;
$token = unserialize($accessToken);
$client = $token->getHttpClient($config);
$client->setUri('https://www.googleapis.com/buzz/v1/activities/@me/
@self?alt=json');
$client->setMethod(Zend_Http_Client::POST);
$client->setEncType(Zend_Http_Client::ENC_FORMDATA);
$client->setHeaders('Content-Type: application/json');
$data = array(
'data' => array(
'object' => array(
'type' => 'note',
'content' => $statusMessage,
),
),
);
$dataXml = "<entry xmlns='http://www.w3.org/2005/Atom'
xmlns:activity='http://activitystrea.ms/spec/1.0'>
<activity:object>
<activity:object-type>http://activitystrea.ms/schema/1.0/
note</activity:object-type>
<content type='html'>$statusMessage<content>
</activity:object>
</entry>";
//$client->setRawData($dataXml);
$client->setRawData(Zend_Json::encode($data));
//$client->setParameterPost("content", $statusMessage);
$response = $client->request();
** As you can see, I did a bit of testing with both the xml+atom and json requests - not much luck with either. **正如您所看到的,我对xml + atom和json请求进行了一些测试 - 两者都没有多少运气。
Can you see anything clearly wrong there? 你能看到任何明显的错误吗? And another reminder that I am using Zend_Oauth.
另一个提醒我正在使用Zend_Oauth。
I have some problem 我有一些问题
Use option: 使用选项:
'requestScheme' => Zend_Oauth::REQUEST_SCHEME_QUERYSTRING 'requestScheme'=> Zend_Oauth :: REQUEST_SCHEME_QUERYSTRING
in your $config array 在你的$ config数组中
After this change my problem was solved 这次改变后我的问题得到了解决
PS More code: PS更多代码:
$OAuthConfiguration = array(
'version' => '1.0',
'requestScheme' => Zend_Oauth::REQUEST_SCHEME_QUERYSTRING,
'signatureMethod' => 'HMAC-SHA1',
'callbackUrl'=>'####',
'requestTokenUrl' => 'https://www.google.com/accounts/OAuthGetRequestToken',
'authorizeUrl' => 'https://www.google.com/buzz/api/auth/OAuthAuthorizeToken',
'accessTokenUrl' => 'https://www.google.com/accounts/OAuthGetAccessToken',
'consumerKey' => '####',
'consumerSecret' => '####',
);
$OAuthConsumer = new Zend_Oauth_Consumer($OAuthConfiguration);
//authorizeOAuth
$params = array(
'domain'=>'####',
'scope'=>'https://www.googleapis.com/auth/buzz'
);
$token = $OAuthConsumer->getRequestToken($params);
$_SESSION['token']['buzz'] = serialize($token);
$OAuthConsumer->redirect($params);
//callbackOAuth
if (!empty($_GET) && isset($_SESSION['token']['buzz'])) {
$token = $consumer->getAccessToken(
$_GET,
unserialize($_SESSION['token']['buzz'])
);
unset($_SESSION['token']);
return serialize($token);
} else {
return false;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.