Генерирование авторизационного токена Oauth с использованием кодировки base64 - PullRequest
0 голосов
/ 29 апреля 2019

Я пытаюсь следовать руководству по созданию токенов аутентификации Oauth для API YAHOO DSP.

Кодирование Base64 - это способ кодирования двоичных данных в текст, чтобы их можно было легко передавать по сети без ошибок.

На этом шаге вы возьмете идентификатор клиента и секрет клиента, которые сгенерировала для вас консоль YDN, и закодируете их, используя протокол base64. Вы можете использовать онлайн-сервис кодирования, например base64encode.org.

Независимо от того, какую службу вы используете, убедитесь, что к ключам CLIENT_ID и CLIENT_SECRET не добавлены пробелы, и разделите CLIENT_ID и CLIENT_SECRET двоеточием, то есть CLIENT_ID: CLIENT_SECRET.

Сгенерированное значение теперь будет упоминаться как ENCODED (CLIENT_ID: CLIENT_SECRET) в этом руководстве.

Пример приведен:

CLIENT_ID = dj0yJmk9N2pIazlsZk1iTzIxJmQ9WVdrOWVEUmpVMFpWTXpRbWNHbzlNQS0tJnM9Y29uc3VtZXJzZWNyZXQmeD00NA–

CLIENT_SECRET = a7e13ea3740b933496d88755ff341bfb824805a6

РАЗРЕШЕНИЯ = ZGoweUptazlOMnBJYXpsc1prMWlUekl4Sm1ROVdWZHJPV1ZFVW1wVk1GcFdUWHBSYldOSGJ6bE5RUzB0Sm5NOVkyOXVjM1Z0WlhKelpXTnlaWFFtZUQwME5BLS06YTdlMTNlYTM3NDBiOTMzNDk2ZDg4NzU1ZmYzNDFiZmI4MjQ4MDVhNg ==

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

Я пробовал оба кодирования целиком, т.е. кодировать (CLIENT_ID: CLIENT_SECRET), и каждый элемент индивидуально кодировать (CLIENT_ID): кодировать (CLIENT_SECRET).

Попытка кодирования целиком: ZGoweUptazlOMnBJYXpsc1prMWlUekl4Sm1ROVdWZHJPV1ZFVW1wVk1GcFdUWHBSYldOSGJ6bE5RUzB0Sm5NOVkyOXVjM1Z0WlhKelpXTnlaWFFtZUQwME5B4oCTOiBhN2UxM2VhMzc0MGI5MzM0OTZkODg3NTVmZjM0MWJmYjgyNDgwNWE2

Попытка кодирования каждого элемента: ZGoweUptazlOMnBJYXpsc1prMWlUekl4Sm1ROVdWZHJPV1ZFVW1wVk1GcFdUWHBSYldOSGJ6bE5RUzB0Sm5NOVkyOXVjM1Z0WlhKelpXTnlaWFFtZUQwME5B4oCT: YTdlMTNlYTM3NDBiOTMzNDk2ZDg4NzU1ZmYzNDFiZmI4MjQ4MDVhNg ==

Ожидаемый результат: ZGoweUptazlOMnBJYXpsc1prMWlUekl4Sm1ROVdWZHJPV1ZFVW1wVk1GcFdUWHBSYldOSGJ6bE5RUzB0Sm5NOVkyOXVjM1Z0WlhKelpXTnlaWFFtZUQwME5BLS06YTdlMTNlYTM3NDBiOTMzNDk2ZDg4NzU1ZmYzNDFiZmI4MjQ4MDVhNg ==

Разница между «каждым элементом» и ожидаемым результатом составляет всего несколько символов, соответствующих концу client_ID и двоеточию. B4oCT: должно быть BLS06.

Ссылки на полную документацию: https://developer.yahoo.com/dsp/api/docs/authentication/tokens.html https://developer.yahoo.com/dsp/api/docs/traffic/info/sandbox.html

Обновление:

Последний символ Client_ID - '-'. Это какой-то нестандартный символ, который интерпретируется как две черточки, т. Е.'-- 'в utf-8 и windows 1258.

1 Ответ

0 голосов
/ 29 апреля 2019

Еще одно замечание: на заметку, что когда вы расшифровываете ожидаемый результат, вы получите идентификатор клиента как

dj0yJmk9N2pIazlsZk1iTzIxJmQ9WVdrOWVEUmpVMFpWTXpRbWNHbzlNQS0tJnM9Y29uc3VtZXJzZWNyZXQmeD00NA--

вместо

dj0yJmk9N2pIazlsZk1iTzIxJmQ9WVdrOWVEUmpVMFpWTXpRbWNHbzlNQS0tJnM9Y29uc3VtZXJzZWNyZXQmeD00NA–

ПРИМЕЧАНИЕ, есть два "- "в конце.

Авторизационный токен клиента OAuth всегда генерируется с использованием кодировки Base64 в следующем формате

Base64_Encoding(CLIENT_ID:CLIENT_SECRET)

В большинстве случаев это кодирование Base64 выполняется с типом кодировки как" UTF-8».

Похоже, Yahoo требует этот токен с другой кодировкой.На «https://www.base64encode.org/", если вы попытаетесь закодировать ваш« CLIENT_ID: CLIENT_SECRET »с« Windows-1254 »в качестве целевой кодировки, вы получите ожидаемый результат. Таким образом, похоже, что и кодирование, и декодирование здесь выполняются с сохранением "Windows-1254" кодировка на месте.

...