Почему моей подписи oAuth нужно в конце "%26"?
Я работаю с API imgur и мне нужно настроить аутентификацию oAuth. Это идет довольно гладко, но я столкнулся с загадкой...
Я не смог заставить конечную точку oAuth request_token сообщить мне сообщение об успехе, поэтому я связался с разработчиками imgur, и они дали мне важную информацию. Однако я не смог найти, откуда эта информация.
Информация, о которой я говорю, является моей подписью oAuth. Я знал, что подпись oAuth - это просто мой api_secret, но в рабочем коде, предоставленном imgur dev, был амперсанд, помеченный на конце.
Этот амперсанд был URL-кодирован, дважды. Это пошло от &
в %26
затем %2526
API Secret => 7fc6ff69*snip*c4016e7f99e076 // This does not work by itself
[oauth_signature] => 7fc6ff69*snip*c4016e7f99e076%2526 // Works
[oauth_signature] => 7fc6ff69*snip*c4016e7f99e076& // This also works
Почему нужен амперсанд? Это ошибка или она упоминается где-то в документации oAuth 1.0? Это всегда амперсанд, или это просто странное совпадение? Я понятия не имею, откуда это...
РЕДАКТИРОВАТЬ: Стоит отметить, что oauth_signature является последней переменной в запросе, поэтому он не должен сливаться с другой переменной. По сути, конец URL должен заканчиваться амперсандом (или его версией в кодировке html).
1 ответ
Для защищенных запросов OAuth подпись обычно генерируется с использованием пары секретов (часто общего секретного ключа и секретного секретного ключа). Как вы, наверное, догадались, для разделения двух секретов используется амперсанд ("&"). Тем не менее, когда в качестве подписи используется один секрет (как в случае с imgur), амперсанд все еще требуется, но поскольку нет второго секрета для разделения, амперсанд появляется в конце строки. Еще один способ думать об этом - амперсанд разделяет api_secret и пустой секрет.