VK Oauth: ошибка безопасности –

спросил

Изменено 4 года, 2 месяца назад

Просмотрено 8к раз

Я пытаюсь авторизовать свое автономное приложение. Но после того, как я нажимаю «Разрешить», он всегда перенаправляет на http://oauth.vk.com/error?err=2 и дает это как тело ответа:

 {"error":"invalid_request", "error_description":"Ошибка безопасности"}
 

Вот URL запроса (у меня правильный client_id ):

 https://oauth.vk.com/authorize?client_id=...&scope=messages,offline&redirect_uri=https://oauth.vk.com /blank.html&display=page&v=5.37&response_type=токен
 

Вроде все перепробовал:

  • Включение и выключение приложения
  • Прохождение область как битовая маска
  • URI, кодирующий некоторые параметры, чтобы иметь правильный URL-адрес
  • и так далее
  • oauth
  • oauth-2. 0
  • vk

После часа поисков я нашел это.

Итак, это означает, что пользователь имеет старую сессию и должен повторно войти в браузер.

2

Пробел в параметре state вызывает это.

OAuth 2 RFC, разделы 4.1.1 по запросу авторизации и 4.1.2 по ответу на авторизацию, рекомендуется использовать state Параметр для поддержания состояния в потоке кода авторизации, в частности, для предотвращения CSRF.

Когда я установил в этом поле значение

CSRFTOKEN123 http://my.site/next/url , я получил эту ошибку. Замена (пробел) на : для получения CSRFTOKEN123:http://my.site/next/url помогает.

Кстати, я не нашел упоминания параметра state на сайте документации ВКонтакте, но система авторизации VK OAuth 2 действительно его поддерживает. Иначе это нельзя было бы назвать OAuth 2. Так что я считаю законным использовать параметр состояния .