Почему моей подписи 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 и пустой секрет.

Другие вопросы по тегам