VK Oauth: ошибка безопасности
Я пытаюсь авторизовать отдельное приложение. Но после нажатия кнопки "Разрешить" он всегда перенаправляется на http://oauth.vk.com/error?err=2
и дает это как тело ответа:
{"error":"invalid_request", "error_description":"Security Error"}
Вот 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=token
Кажется, я все перепробовал:
- Включение и выключение приложения
- Переходя
scope
как битовая маска - URI, кодирующий некоторые параметры, чтобы иметь правильный URL
- и так далее
1 ответ
После часа поисков я нашел это.
Таким образом, это означает, что пользователь имеет старый сеанс и должен повторно войти в браузер.
Пространство в 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, но система авторизации VK OAuth 2 его поддерживает. В противном случае его нельзя назвать OAuth 2. Поэтому я нахожу законным использовать state
параметр.
Тема https://vk.com/topic-17680044_30635058 упомянутая автором, закрыта, текущее обсуждение - https://vk.com/topic-1_24428376. Есть ряд вопросов по этому вопросу. Все на русском.