2009-10-05 12 views
13

Próbuję uwierzytelnić się w serwisie YouTube za pośrednictwem ich interfejsu Data API i po prostu muszę wiedzieć, jak należy przetłumaczyć nagłówki z ich przykładu (poniżej) na wywołania funkcji PHP + CURL. Częścią mylącą jest część autoryzacji, która przerywa parowanie nazwa/wartość z własnym zestawem par nazw i wartości.Jak korzystać z protokołu OAuth w PHP i cURL?

This documentation jest wszystko dobrze i dobrze, z tym że nie wiem, jak sformatować to, czego wymaga w nagłówkach.

Ich przykład:

POST /accounts/OAuthGetRequestToken HTTP/1.1 
Host: https://www.google.com 
Content-Type: application/x-www-form-urlencoded 
Authorization: OAuth 
       oauth_consumer_key="example.com", 
       oauth_signature_method="RSA-SHA1", 
       oauth_signature="wOJIO9A2W5mFwDgiDvZbTSMK%2FPY%3D", 
       oauth_timestamp="137131200", 
       oauth_nonce="4572616e48616d6d65724c61686176", 
       oauth_version="1.0" 
scope=http://gdata.youtube.com 

To nie musi być wyszukane, po prostu trzeba zrobić wymiany klucza na jednym koncie, więc mogę przesyłać filmy automatycznie. Po prostu nie wiem, jak sformatować elementy autoryzacji w tablicy nagłówków dla mojej Pomocy?

Odpowiedz

18

Nie korzystałem z api youtube przedtem, ale stworzyłem własne API REST, używając OAuth do aplikacji internetowej.

nagłówek powinien być: application/x-www-form-urlencoded i jako przykład powiedzieć, parametry jak oauth_consumer_key, oauth_signature_method, oauth_signature etc .. muszą być wysyłane przy użyciu post, więc trzeba go umieścić jak to:

 $header[]   = 'Content-Type: application/x-www-form-urlencoded'; 

      curl_setopt($ch, CURLOPT_HTTPHEADER,  $header); 
      curl_setopt($ch, CURLOPT_POST,  true); 
      curl_setopt($ch, CURLOPT_POSTFIELDS, urlencode("oauth_consumer_key=example.com& 
      oauth_signature_method=RSA-SHA1& 
      oauth_signature=wOJIO9A2W5mFwDgiDvZbTSMK%2FPY%3D& 
      oauth_timestamp=137131200& 
      oauth_nonce=4572616e48616d6d65724c61686176& 
      oauth_version=1.0")); 

mam nadzieję, że to pomaga: D

Pozdrawiam.

+0

Nie miałem okazję przetestować ten, ale wygląda jak kompletny przykład tak mam zamiar zaznaczyć to zaakceptowane. Jeśli ja (lub ktoś inny) odkryje problem z powyższym użyciem w stosunku do interfejsu API YouTube, zaktualizuję go. (Masz również kilka upvotes, więc to jest.) –