Twitter oauth_signature требует, чтобы urlencode (процентное шестнадцатеричное кодирование) выполнялся дважды по URL-адресу обратного вызова в базе подписи

Я пишу PHP-скрипт, чтобы пользователи могли использовать Twitter для входа в приложение с использованием OAuth 1.0a.

У меня проблема с API request_token.

Параметр oauth_signature требует, чтобы хэш HMAC-SHA1 выполнялся на основе подписи, которая имеет такие параметры, как URL-адрес request_token и мой URL-адрес обратного вызова.

URL обратного вызова

https://example.com/callback.php

процент сбежал в

https%3A%2F%2Fexample.com%2Fcallback.php

но вызов request_token терпит неудачу, если я снова не выйду из URL-адреса в процентах

https%253A%252F%252Fexample.com%252Fcallback.php

Чтобы API request_token работал, мне нужно заменить «%» на «% 25».

URL-адрес request_token в той же базе подписи не должен выходить за пределы процентов.

https%3A%2F%2Fapi.twitter.com%2Foauth%2Frequest_token

работает нормально.

Требует ли Twitter, чтобы URL-адрес обратного вызова в базовой строке подписи дважды экранировался в процентах?


person godzilla    schedule 26.12.2020    source источник


Ответы (1)


На странице документа по аутентификации Twitter. показывает строку параметра с URL-адресом, закодированным один раз

include_entities = истина & oauth_consumer_key = xvz1evFS4wEEPTGEFPHBog & oauth_nonce = kYjzVBB8Y0ZFabxSWbWovY3uYSQ2pTgmZeNu2VS4cg & oauth_signature_method = HMAC-SHA1 & oauth_timestamp = 1318622958 & oauth_token = 370773112-GmHxMAgYyLbNEtIKZeRNFsMKPR9EyMZeS9weJAEb & oauth_version = 1.0 & состояние = Привет% 20Ladies% 20% 2B% 20Gentlemen% 2C% 20a% 20signed% 20OAuth% 20request% 21

а затем показывает базовую строку подписи с дважды закодированным в процентах параметром.

POST&https%3A%2F%2Fapi.twitter.com%2F1.1%2Fstatuses%2Fupdate.json&include_entities%3Dtrue%26oauth_consumer_key%3Dxvz1evFS4wEEPTGEFPHBog%26oauth_nonce%3DkYjzVBB8Y0ZFabxSWbWovY3uYSQ2pTgmZeNu2VS4cg%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1318622958%26oauth_token%3D370773112-GmHxMAgYyLbNEtIKZeRNFsMKPR9EyMZeS9weJAEb%26oauth_version%3D1.0%26status%3DHello%2520Ladies%2520%252B%2520Gentlemen%252C%2520a%2520signed%2520OAuth%2520request%2521

Таким образом, мой URL-адрес обратного вызова, который является частью строки параметра, имеет «%» измененный на «% 25».

person godzilla    schedule 27.12.2020