Как использовать OAuth с PHP и cURL? - PullRequest
13 голосов
/ 06 октября 2009

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

В этой документации все хорошо, за исключением того, что я не знаю, как отформатировать то, что им требуется в заголовках.

Их пример:

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

Помощь

1 Ответ

18 голосов
/ 20 июня 2010

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

заголовок должен быть: application / x-www-form-urlencoded и, как видно из примера, параметры как oauth_consumer_key, oauth_signature_method, oauth_signature и т. д. должны быть отправлены с использованием post, поэтому вам нужно указать его следующим образом:

        $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

С уважением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...