2009-10-05 2 views
13

Я пытаюсь выполнить аутентификацию на YouTube через свой API данных и просто должен знать, как заголовки должны быть переведены из их примера (ниже) в вызовы функций PHP + CURL. Запутанная часть - это часть авторизации, которая разбивает пару имен/значений с собственным набором пар имен и значений.Как использовать OAuth с PHP и cURL?

This documentation все хорошо и хорошо, за исключением того, что я не знаю, как отформатировать то, что им требуется в заголовках.

Их пример:

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 

Это не должны быть фантазии, мне просто нужно, чтобы сделать обмен ключами для одной учетной записи, так что я могу загрузить видео автоматически. Я просто не знаю, как отформатировать элементы авторизации в массив заголовков для моего

curl_setopt($ch, CURLOPT_HEADER, $headers); 

Помощь?

ответ

18

Я раньше не использовал apt youtube, но я сделал свой собственный REST api, используя OAuth для веб-приложения.

заголовок должен быть: применение/х-WWW-форм-urlencoded и в качестве примера сказать, параметры как oauth_consumer_key, oauth_signature_method, oauth_signature и т.д .. должны быть отправлены с помощью поста, так что вам нужно поставить его как это:

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

я надеюсь, что это помогает: D

С уважением.

+0

У меня не было возможности проверить это, но это выглядит как полный пример, так что я собираюсь отметить это принято. Если я (или кто-то еще) обнаружит проблему с вышеупомянутым, используемым против API YouTube, я обновлю. (У вас есть еще несколько upvotes, так что это так.) –

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