Задать вопрос

VK API: как проверить, что access_token соответствует uid при минимальных разрешениях?

Всем привет,


Есть следующий сценарий: клиент и сервер написанные на ява.

Клиент проходит аутенфикация ВКонтакте и получается uid и access_token, которые посылает на сервер.


Дальше сервер делает пробный запрос к API с полученным access_token и uid и получает имя пользователя.


Но как удостовериться, что access_token соответствуюет фиксированному uid?
При этом я не хочу пугать пользователя, запрашивая разрешения на извлечение таких данных, где возможно это соответствие и будет проверяться.


Например, клиент пройдя аутенфикацию может послать на сервер свой access_token и не свой uid. Но поскольку access_token будет правильный, то и запросы будут нормально
  • Вопрос задан
  • 19153 просмотра
Подписаться 8 Оценить 2 комментария
Пригласить эксперта
Ответы на вопрос 4
@Gromadchuk
Надеюсь еще не поздно написать ответ, но Вы можете проверить id пользователя через полученный access_token. Для этого нужно выполнить метод users.get, передав ему полученный access_token (https://api.vk.com/method/users.get?access_token=ТОКЕН).
Ответ написан
damirazo
@damirazo
Software developer
Не совсем понял вопрос, но соответствие uid проверяется по auth_key, который должен быть равен md5(viewer_id(uid)+'_'+app_id+'_'+app_secret_key),
где viewer_id это айди пользователя, просматривающего страницу, app_id это айди приложения и auth_secret_key это секретный ключ приложения. Хэш данного выражения должен быть равен параметру auth_key, в противном случае указанный пользователь не соответствует реальному.
Ответ написан
nixan
@nixan
Если речь об Android, то пинать девелоперов вконтактика реализовать нормальную работу с AccountManager)
Ответ написан
Комментировать
morozovdenis
@morozovdenis
вот что я сделал:

vk.com/dev/users.search - вот на этот запрос нужен access_token и таким образом сделав сюда запрос можно проверить валидность access_token-а

url:
https://api.vk.com/method/users.search?access_token=<access_token>&sig=<sig>


где sig
sig = md5('/method/users.search?access_token=<access_token>' + SECRET)


+ это конкатенация
SECRET это поле secret из структуры VKAccessToken iOS(Android)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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