...
Как и везде, во все методы нужно передавать параметр applicationType=MobileApplication/Android или applicationType=MobileApplication/iOS в зависимости от системы.
Если для указанной соцсети метод GetExternalAuthenticationInfo вернул в ответе MobileApplicationId, и если ваше приложение хочет реализовать нативную авторизацию, то её можно провести через интеграцию входа в мобильное приложение, в ином случае, если в ответе нет MobileApplicationId или нет возможности реализовать нативную авторизацию, используется обычная схема авторизации через адрес возврата (redirect url), как в предыдущем разделе..
При нативной авторизации процесс входа в систему реализуется в мобильном приложении, после чего, при успешном входе пользователя приложение получает токен идентификатора (idToken) для пользователя. После чего данный токен идентификатора необходимо передать в OTAPI. Для отправки токена используется метод ConfirmExternalAuthenticationWithToken, в него передается тип приложения, contextId (полученный ранее) и токен идентификатора, так же опциональный параметр - xmlCustomData, в нем указываются дополнительные необходимые поля.
- Если всё успешно, будет возвращена готовая сессия пользователя. Запоминаем ее и используем далее.
- Если соцсеть не выдала email, то в ответе будет получена ошибка с ErrorCode/SubErrorCode равными NotAvailable/EmailNotProvidedByAuthenticationSystem, тогда необходимо:
- Запросить у пользователя почту.
- Передать (вместе с контекстом, полученным ранее) в метод ConfirmExternalAuthentication — а в ответ получите сессию.
- Если в ответ получена ошибка с ErrorCode/SubErrorCode равными ValidationError/PasswordRequiredForFinishExternalAuthentication, запросить у пользователя дополнительно пароль к его аккаунту.
- Повторить вызов метода ConfirmExternalAuthentication еще вместе с введенным паролем.
- Если же произошла какая-то иная ошибка, то в параметрах будет получена ошибка с другим кодом, то содержимое этой ошибки можно показать пользователю, или просто показать «Ошибка при авторизации».
...