Интеграция RooX UIDM с социальными сетями
Получение токенов доступа пользователя для использования их в RooX UIDM
Важно
|
Инструкции актуальны для версий SDK соцсетей на 07.10.2020 |
VKontakte
-
направить пользователя в браузере по URL:
https://oauth.vk.com/authorize?client_id=<vk_app_id>&display=page&scope=offline&response_type=code&redirect_uri=<sso_redirect_url>&v=5.74
-
параметры URL:
-
<vk_app_id> - идентификатор настроенного приложения в Vkontakte, например, 1234567
-
<sso_redirect_url> - адрес возврата после аутентификации в соцсети, например, https://sso.rooxteam.com
-
-
пользователь будет перенаправлен соцсетью на указанный адрес возврата, дополненный параметрами:
https://<sso_base_url>/sso/vk_callback.jsp?code=ad569c23d7a54f0128
-
преобразовать параметры по алгоритму для использования в дальнейших запросах к RooX UIDM
Алгоритм вычисления значения параметра <socialData>
Сторонний ресурс возвращает результат попытки авторизации пользователя в виде JSON. Данный JSON необходимо преобразовать и передать в RooX UIDM в качестве параметра <socialData>. Для преобразования необходимо: представить JSON в формате x-www-form-urlencoded, закодировать полученную строку в UTF-8, взять битовое представление строки в кодировке UTF-8, закодировать битовое представление в Base64. Полученная строка из битового представления и есть значение параметра <socialData>.
Пример. Пусть JSON, который отправляет сторонний ресурс, есть
{
"accessToken": "EAACo4Is07YsBAFygpkjSqxKEN8hOBZAWBlEZD",
"data_access_expiration_time": 1574223509,
"expiresIn": 6091,
"signedRequest": "FmLQr-m3i9F9",
"userID": "100007547412176"
}
Тогда x-www-form-urlencoded представление будет
accessToken=EAACo4Is07YsBAFygpkjSqxKEN8hOBZAWBlEZD&data_access_expiration_time=1574223509&expiresIn=6091&signedRequest=FmLQr-m3i9F9&userID=100007547412176
Битовое представленние, закодированное в Base64, будет
YWNjZXNzVG9rZW49RUFBQ280SXMwN1lzQkFGeWdwa2pTcXhLRU44aE9CWkFXQmxFWkQmZGF0YV9hY2Nlc3NfZXhwaXJhdGlvbl90aW1lPTE1NzQyMjM1MDkmZXhwaXJlc0luPTYwOTEmc2lnbmVkUmVxdWVzdD1GbUxRci1tM2k5RjkmdXNlcklEPTEwMDAwNzU0NzQxMjE3Ng==