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