Использование OAuth для авторизации API с PHP

0

Есть несколько API-интерфейсов, которые я пытаюсь получить для захвата данных в PHP. Все они используют авторизацию OAuth, и я не могу, чтобы жизнь меня поняла.

Если я сделаю запрос file_get_contents или file_get_contents запрос данных с использованием URL-адреса API, очевидно, он запрашивает у меня авторизацию.

Мой вопрос: как инициализировать это авторизацию с помощью OAuth?

У меня есть потребительский ключ, секрет потребителя, токен OAuth и секрет токена OAuth. Один из API сказал, что мне нужно включить правильный заголовок OAuth с моим запросом, то есть:

Authorization: OAuth
  oauth_consumer_key="key",
  oauth_token="token",
  oauth_signature_method="HMAC-SHA1",
  oauth_signature="f922O9A2W5mFwDgiDvZbTSMK%2FPY%3D",
  oauth_timestamp="157131220",
  oauth_nonce="90922def48616d6d65724c61686176",
  oauth_version="1.0"  

Но я понятия не имею, как правильно закодировать этот заголовок в PHP.
Я попытался с header() в верхней части моего PHP-скрипта или с помощью параметра контекста в моем запросе file_get_contents. Я тоже посмотрел в скрученные заголовки.

Я просто не могу понять.
Я чувствую, что мне не хватает чего-то очевидного, любой совет будет очень благодарен!

  • 1
    Вы должны добавить свой письменный код в качестве редактирования вашего вопроса.
Теги:
curl
header
oauth

2 ответа

1

Я выполнил инструкции (https://dev.twitter.com/oauth/overview/authorizing-requests), так как это был их API, к которому я пытался получить доступ в то время. В то время там было не так. Это было urlencoding на шаге 2.1. Теперь это может быть иначе.

0

вы пробовали использовать cURL для запроса? я считаю это немного более прямым, чем file_get_contents() try

$headers = array(
Authorization => OAuth
oauth_consumer_key => "key",
oauth_token => "token",
oauth_signature_method => "HMAC-SHA1",
oauth_signature => "f922O9A2W5mFwDgiDvZbTSMK%2FPY%3D",
oauth_timestamp => "157131220",
oauth_nonce => "90922def48616d6d65724c61686176",
oauth_version => "1.0" ); 

curl_setopt($cURL, CURLOPT_URL, $url);
curl_setopt($cURL, CURLOPT_NOBODY, true);
curl_setopt($cURL, CURLOPT_POST, true);
curl_setopt($cURL, CURLOPT_RETURNTRANSFER, true);
curl_setopt($cURL, CURLOPT_POSTFIELDS, $data);
curl_setopt($cURL, CURLOPT_HEADER, true);
curl_setopt($cURL, CURLINFO_HEADER_OUT, true);
curl_setopt($cURL, CURLOPT_NOBODY, true);
curl_setopt($cURL, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($cURL);

не слишком уверен в формате массива, но что-то похожее

Ещё вопросы

Сообщество Overcoder
Наверх
Меню