Unified Identity Management logo figure Unified Identity Management logo figure

Интеграция UIDM с социальными сетями

2. Получение токенов доступа пользователя для использования их в UIDM

Инструкции актуальны для версий SDK соцсетей на 07.10.2020

2.1. Facebook

  • направить пользователя в браузере по URL:

https://www.facebook.com/v3.1/dialog/oauth?client_id=<facebook_app_id>&scope=&response_type=token,signed_request&redirect_uri=<sso_redirect_url>
  • параметры URL:

    • <facebook_app_id> - идентификатор настроенного приложения в Facebook, например, 123456789123456

    • <sso_redirect_url> - адрес возврата после аутентификации в соцсети, например, https://sso.rooxteam.com

  • пользователь будет перенаправлен соцсетью на указанный адрес возврата, дополненный параметрами:

https://<sso_base_url>/?#signed_request=gUxNDhIXiIVmvKSAo64RNYJGwfoaW5qGxg9q5KnTv_g.eyJ1c2VyX2lkIjoiMzA2MjU2Nzc2MzgyMjczMSIsImNvZGUiOiJBUUFrekltbWdYblhCTks3WHBRZHE3Q21GQlFqVnRyZzI4azdCUUlyMWNtQnQwSU5BMmZxSndYQ05MUVUzMDRtVHFET3dReHlNeFFpYnZtYWVtd3N5Q3pJTTU5ZWN4akc5SUREV1dhaFJRaThNWFR0amh4RU5Ca2lqVkV1Sk8xTTlZbzBockZZbnhoN2p1dnBPdkVjNTFZSUNmY0NzdnNDNmcxOU1DSzJkX0ZxazVzdW92RUlvRm5IM2F1R013akxTZmRMV01kQ0JkamY2Ymticks4R1VZdE1CUmFUb1U3V3ZKMkFybmVyUzNDRURsSVNBT1NuNE15TDdJOVRtR0FvYWpCXzZGbTloclV0YW5vNWJWNndXMnUwVzFFamN1dVJ3YkFwd3drY3g5RGp4dXhPdVpUdC1lYWMtQXRScEdEeWFWUWVMaHlMQmdkZENzNUNNdXJlUDNsYiIsImFsZ29yaXRobSI6IkhNQUMtU0hBMjU2IiwiaXNzdWVkX2F0IjoxNjAyMDY2MTQ5fQ&access_token=EAAI4YIZCYTSgBAMzEUXOcfS2SOJThA31fUUftL2SjhgZCMT7myMc3w5cr2sSHaw03WASKqal4Ey1InEgZCoBtr8FXg2yA8qxXp4vtlEXUJljvJQkjpwiRB5k5zhZC8asN2ukvaX2fdZCp1FXkUFXOdv71pZBpQ1du5lbkuOAH9BjNRUUp3zbzGZAKcc2xj3oQodB41IePocxgZDZD&data_access_expiration_time=1609842149&expires_in=5851
  • преобразовать параметры по алгоритму для использования в дальнейших запросах к UIDM

2.2. 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
  • преобразовать параметры по алгоритму для использования в дальнейших запросах к UIDM

3. Алгоритм вычисления значения параметра <socialData>

Сторонний ресурс возвращает результат попытки авторизации пользователя в виде JSON. Данный JSON необходимо преобразовать и передать в 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==