2010-06-30 4 views
4

Вот ответ, который я получаю при попытке создать новую активность:Неизвестная ошибка заголовок авторизации с Buzz API - Использование Zend OAuth

{"error":{"errors":[{"message":"Unknown authorization 
header","locationType":"header","location":"Authorization"}],"code": 
401,"message":"Unknown authorization header"}} 

Вот запрос я послал (для отладки):

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"}}} 

Все остальные запросы, чтобы получить access_token работал просто отлично, но теперь я не слишком уверен, почему он не работает.

** Обновление

Чтобы помочь с отладкой немного больше, вот код в вопросе:

$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(); 

** Как вы можете видеть, я сделал немного тестирование с обоими xml + atom и Запросы json - не так много удачи.

Вы видите, что что-то явно не так? И еще одно напоминание, что я с использованием Zend_Oauth.

ответ

1

У меня есть некоторая проблема

Использование опции:
'requestScheme' => Zend_Oauth :: REQUEST_SCHEME_QUERYSTRING
в вашем $ массиве конфигурации

После этого изменить мою проблему была решена

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; 
} 
+0

Я дам этот снимок завтра и сообщит, работает оно или нет. – xil3

Смежные вопросы