Twitter Oauth Несоответствия кодировки URL? - PullRequest
2 голосов
/ 19 июля 2010

Я читаю пошаговое руководство по номеру http://dev.twitter.com/pages/auth, но, похоже, существует несоответствие в кодировании URL-адреса обратного вызова. Обратный вызов указан как:
oauth_callback - http://localhost:3005/the_dance/process_callback?service_provider_id=11

Базовая строка подписи указана как:
POST & ... oauth_callback% 3D HTTP% 253A% 252F% 252Flocalhost% 253A3005% 252Fthe_dance% 252Fprocess_callback% 253Fservice_provider_id% 253D11 % 26oauth_consumer_key% 3D ...

Обратный вызов представляется здесь двойным кодированием.

Подписанный заголовок авторизации указан как:
OAuth oauth_nonce = "QP70eNmVz8jvdPevU3oJD2AfF7R7odC2XJcn4XlZJqk", oauth_callback = " HTTP% 3A% 2F% 2Flocalhost% 3A3005% 2Fthe_dance% 2Fprocess_callback% 3Fservice_provider_id% 3D11 ", ...

Здесь обратный вызов представляется в виде одного URL-адреса. Почему они не последовательны?

1 Ответ

6 голосов
/ 20 июля 2010

Кодировка не является противоречивой, URL используется только в двух разных ситуациях с двумя разными требованиями.

URL начинается не закодированным в вашем приложении. Второй пример, который вы опубликовали, - это значение, которое будет передано на сервер в качестве заголовка, поэтому оно должно быть закодировано в URL (это один раз).

Подписанный заголовок авторизации перечислены как: OAuth oauth_nonce = "QP70eNmVz8jvdPevU3oJD2AfF7R7odC2XJcn4XlZJqk", oauth_callback = "http% 3A% 2F% 2Flocalhost% 3A3005% 2Fthe_dance% 2Fprocess_callback% 3Fservice_provider_id% 3D11", ...

Затем значения всех параметров заголовка OAuth должны быть объединены с другими необходимыми значениями, чтобы создать базовую строку для подписи. Базовая строка создается из значений , поскольку они передаются на сервер . Таким образом, вы берете значение, которое вы передаете на сервер, ваш уже закодированный URL, и объединяете его с другими значениями, каждое из которых должно быть закодировано в URL, чтобы сформировать новую строку, разделенную &.

Вы можете понять, почему это необходимо сделать, поскольку третий раздел базовой строки содержит параметры запроса, значения которых уже закодированы в URL (например, oauth_callback), и в качестве разделителя используется &. Чтобы безопасно объединить этот список параметров запроса (содержащий &) в базовую строку (также используя & в качестве разделителя), перед объединением его необходимо снова закодировать в URL. В этот момент oauth_callback был закодирован дважды, один раз, а один раз как часть большего объединенного значения:

Указана базовая строка подписи как: POST & ... oauth_callback% 3Dhttp% 253A% 252F% 252Flocalhost% 253A3005% 252Fthe_dance% 252Fprocess_callback% 253Fservice_provider_id% 253D11% 26oauth_consumer_key% 3D ...

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