@fuliozor
Web and Android developer

Проблема при авторизации через VK API с сервера?

Я разрабатываю серверную часть для многопользовательской игры. Есть необходимость реализовать вход в игру через ВК. Я попробовал следующую схему:
1. Клиент игры авторизуется и получает токен через OAuth (вопрос: какой метод авторизации выбрать Клиентская авторизация или Серверная авторизация), redirect_uri ссылается на сервер с игрой
2. Клиент игры передает токен на сервер, сервер идет с переданным токеном в ВК и пытается получить информацию о пользователе.
Но когда я реализовал такую схему то возникла проблема, когда с севера делается запрос в ВК с полученным от клиента токеном, то ВК возвращает следующий ответ
{"error":{"error_code":17,"error_msg":"Validation required: please open redirect_uri in browser 204211657","request_params":[{"key":"oauth","value":"1"},{"key":"method","value":"users.get"},{"key":"v","value":"5.44"}],"redirect_uri":"https://m.vk.com/login?act=security_check&api_hash=93...28"}},
при этом неважно какой метод (серверный или клиентский) авторизации используется, для получения токена, на клиенте, ответ один и тот же. После перехода по ссылке, указанной в ответе от ВК, и прохождения валидации (путем ввода номера телефона и кода из смс) на клиенте, сервер вновь пытается получить информацию о пользователе от ВК и получает тот же ответ с ошибкой 17.
Подскажите пожалуйста как, все таки, правильно организовать авторизацию через ВК? Какие действия должны осуществляться на сервере а какие на клиенте?
  • Вопрос задан
  • 2793 просмотра
Пригласить эксперта
Ответы на вопрос 2
@ZurgInq
Вам нужна серверная авторизация. И вы вероятнее всего пропустили шаг получения access_token или перепутали его с временным кодом. Для получения access_token ваш сервер делает запрос в vk с полученным ранее временным кодом.
У токена есть время жизни по истечению которого необходимо повторять авторизацию.
Ответ написан
@Yashko
Для авторизации на сервере можно использовать данную библиотеку - https://github.com/Yashko/vk-validation-node
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы