1. Подготовка. На сервисе
https://tonyxu-io.github.io/pkce-generator/ в первом окне сгенерировать Code Verifier по кнопке "Generate Code Verifier". На его основе создать Code Challenge во втором окне, нажав кнопку "Generate Code Challenge".
Сохранить оба кода для дальнейшего использования при получении токенов.
2. Подготовить параметры для авторизации:
https://id.vk.com/authorize?
response_type=code
&client_id=11111111
&scope=offline%20wall%20photos
&redirect_uri=
https://site.ru
&state=XXXRandomZZZ1111111111111111XXXRandomZZZ
&code_challenge=6c7ZD9kujPJSeTMQ8LKzER1LUI1P6DFNHkINCJCtGrA
&code_challenge_method=S256
client_id - id приложения, полученный при его создании.
scope - разрешения для приложения. В примере из документации в качестве разделителя используется последовательность "%20
redirect_uri - свой сайт, указанный в настройках приложения
state - Строка состояния в виде случайной строки, состоящей из символов: a-z, A-Z, 0-9, _, -, длиной не менее 32 символа.
code_challenge - полученная в первом пункте последовательность символов.
Собрать все это в одну строку и вставить в адресную строку браузера. Убедиться, что пользователь авторизован как администратор приложения в ВК. Отправить запрос.
3. Произойдет переход на ваш сайт с формированием в адресной строке ссылки такого содержания:
https://site.ru/?
code=vk2.много букв и цифр
&expires_in=600
&device_id=много букв и цифр
&state=XXXRandomZZZ1111111111111111XXXRandomZZZ
&ext_id=много букв и цифр
&type=code_v2
4. Получение Access Token
Формируем curl-запрос:
curl "
https://id.vk.com/oauth2/auth" -d "
client_id=11111111
&grant_type=authorization_code
&code_verifier=S7yz7Uw_d4B68xGmpVLNqKSCHvGDL9YXuq6Nf1rEi4w
&device_id=много букв и цифр
&code=vk2.много букв и цифр
&redirect_uri=
https://site.ru
&state=XXXRandomZZZ1111111111111111XXXRandomZZZ
"
client_id - id приложения, полученный при его создании.
code_verifier - сгенерированная в первом пункте последовательность символов (не путать с code_challenge, используемым ранее.
device_id - параметр, полученный в пункте 3.
code - параметр, полученный в пункте 3.
state - параметр, полученный в пункте 3.
Объединить все в одну строку:
curl "https://id.vk.com/oauth2/auth" -d "client_id=11111111&grant_type=authorization_code&code_verifier=S7yz7Uw_d4B68xGmpVLNqKSCHvGDL9YXuq6Nf1rEi4w&device_id=много букв и цифр&code=vk2.много букв и цифр&redirect_uri=https://site.ru&state=XXXRandomZZZ1111111111111111XXXRandomZZZ"
и, используя командную строку Windows, отправить запрос.
В результате получим:
access_token - персональный токен для работы с API.
refresh_token - для обновления access_token, после окончания срока его жизни.
expires_in:3600 - время жизни access_token
и другую полезную информацию