Как использовать OAuth с PHP и cURL?

Я пытаюсь выполнить аутентификацию на 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

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

заголовок должен быть: application/x-www-form-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

С уважением.