Я пытаюсь подключить приложение iPhone к PHP API с использованием двухстороннего OAuth в качестве механизма аутентификации. Я использую библиотеки PHP и Objective-C 2.0 с http://code.google.com/p/oauth/ . Проблема в том, что когда я пытаюсь выполнить запрос GET с Objective-C, он не включает параметры OAuth в URI запроса, как это делает библиотека PHP при выдаче запроса OAuth GET:
http://www.mysite.com/oauth/index.php?oauth_consumer_key=key&oauth_nonce=XXXXXXXX&oauth_signature=XXXXXXXXXXX%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1309863754&oauth_version=1.0
Вместо этого он помещает параметры OAuth в заголовок авторизации:
Authorization: OAuth realm="", oauth_consumer_key="XXXXX", oauth_token="XXXX-XXXX", oauth_signature_method="HMAC-SHA1", oauth_signature="XXXXXXXX", oauth_timestamp="1309863855", oauth_nonce="XXXX-XXX-XX-XX-XXXXXXX", oauth_version="1.0"
Я полагаю, что оба способа одинаково справедливы для спецификаций OAuth, верно?
Каким образом я могу прочитать заголовок авторизации с PHP?
Я полагаю, что оба способа одинаково справедливы для спецификаций OAuth, верно?
Да, верно.
Каким образом я могу прочитать заголовок авторизации с PHP?
Заголовки запросов в PHP хранятся в суперглобальном массиве $_SERVER
, каждый заголовок как собственная запись: $_SERVER['HTTP_AUTHORIZATION']
скорее всего, в вашем случае, просто сделайте
var_dump($_SERVER);
и ищите информацию. Подробная информация о том, как PHP работает с HTTP-запросом .
К сожалению, заголовок Authorization
фильтруется PHP (?), Поэтому он не является частью $_SERVER
.
При использовании PHP в качестве модуля Apache обходным apache_request_headers()
является использование функции apache_request_headers()
для извлечения всех заголовков запросов.
Для F / CGI обходным путем является установка заголовка Authorization с Mod_Rewrite в переменную среды, которая имитирует схему PHP, преобразующую заголовки HTTP-запросов:
RewriteEngine on RewriteCond %{HTTP:Authorization} ^(.*)$ [NC] RewriteRule .* - [E=HTTP_AUTHORIZATION:%1]
Решение mod_rewrite должно работать для PHP, работающего с mod_php. Кончик шляпы Джон Найландер.