Основная информация
официальной
документации.
Шаг третий. что дальше?
Дальше следует направить пользователя по сформированной ссылке. После того, как он проделает все необходимые для авторизации манипуляции, он будет перенаправлен на страницу, имеющую адрес
Описания объекта прикриплений
Свойство | Тип | Описание |
---|---|---|
photo | array | Прикрепленные изображения |
doc | array | Прикрепленные документы |
video | array | Прикрепленные видео |
audio | array | Прикрепленные аудио |
wall | array | Прикрепленные записи со стены |
link | array | Прикрепленные ссылки |
sticker | object | Стикер |
gift | object | Подарок |
money | object | Деньги |
geo | object | Карта |
photo, doc, video, audio, wall – Основная структура
id
– Идентификатор прикрипленияowner
– Идентификатор пользователя
doc – Может содержать дополнительное поле type
link – Ссылка
url
– Url ссылкиtitle
– Заголовок ссылкиdescription
– Описание ссылкиphoto
– Идентификатор изображения ссылки
sticker – Стикер
id
– Идентификатор стикераproduct
– Идентификатор набора стикера
gift – Подарок
id
– Идентификатор подарка
money – Перевод денег
amount
– Суммаcurrency
– Валюта
geo – Карта
id
– Идентификатор картыprovider
– Идентификатор картографического сервиса
[примеры] авторизация (получение access и refresh token) oauth 2.0 яндекс и работа с api на php | codd
session_start();
$clientId =‘ad71d04727ef4f4abd33afb7cfa810058332’;// ID приложения
$clientSecret=’15a3fc22e0c04b89b9fd383dc3aa39fe007e’;// Пароль приложения
$redirectUri =‘http://localhost/_blog/tests/yandex-api/oauth.php’;// Адрес, на который будет переадресован пользователь после прохождения авторизации
// Формируем ссылку для авторизации
$params=array(
‘client_id’ =>$clientId,
‘redirect_uri’ =>$redirectUri,
‘response_type’=>‘code’,
// Список необходимых приложению в данный момент прав доступа, разделенных пробелом.
// Права должны запрашиваться из перечня, определенного при регистрации приложения.
// Узнать допустимые права можно по ссылке https://oauth.yandex.ru/client/<client_id>/info, указав вместо <client_id> идентификатор приложения.
// Если параметр scope не передан, то токен будет выдан с правами, указанными при регистрации приложения.
// Параметр позволяет получить токен только с теми правами, которые нужны приложению в данный момент.
‘scope’ =>‘webmaster:verify webmaster:hostinfo metrika:read’,
);
echo‘<a href=”https://oauth.yandex.ru/authorize?’.http_build_query($params).‘”>Авторизация через Яндекс</a>’;
if(isset($_GET[‘code’])){
// Формирование параметров (тела) POST-запроса с указанием кода подтверждения
$query=array(
‘grant_type’ =>‘authorization_code’,
‘code’ =>$_GET[‘code’],
‘client_id’ =>$clientId,
‘client_secret’=>$clientSecret
);
$query=http_build_query($query);
// Формирование заголовков POST-запроса
$header=“Content-type: application/x-www-form-urlencoded”;
// Выполнение POST-запроса
$opts =array(
‘http’=>
array(
‘method’ =>‘POST’,
‘header’ =>$header,
‘content’=>$query
)
);
$context=stream_context_create($opts);
if(!$content=@file_get_contents(‘https://oauth.yandex.ru/token’,false,$context)){
$error=error_get_last();
thrownewException(‘HTTP request failed. Error: ‘.$error[‘message’]);
}
$response=json_decode($content);
// Если при получении токена произошла ошибка
if(isset($response->error)){
thrownewException(‘При получении токена произошла ошибка. Error: ‘.$response->error.‘. Error description: ‘.$response->error_description);
}
$accessToken=$response->access_token;// OAuth-токен с запрошенными правами или с правами, указанными при регистрации приложения.
$expiresIn =$response->expires_in;// Время жизни токена в секундах.
// Токен, который можно использовать для продления срока жизни соответствующего OAuth-токена.
// https://tech.yandex.ru/oauth/doc/dg/reference/refresh-client-docpage/#refresh-client
$refreshToken=$response->refresh_token;
// Сохраняем токен в сессии
$_SESSION[‘yaToken’]=array(‘access_token’=>$accessToken,‘refresh_token’=>$refreshToken);
}elseif(isset($_GET[‘error’])){// Если при авторизации произошла ошибка
thrownewException(‘При авторизации произошла ошибка. Error: ‘.$_GET[‘error’]
.‘. Error description: ‘.$_GET[‘error_description’]);
}
Action.invite
Позволяет пригласить пользователя обратно
Можно указать другой идентификатор пользователя
Параметр | Тип | Описание |
---|---|---|
id | number | Другой идентификатор пользователя |
Action.kick
Исключает пользователя если есть права
Можно указать другой идентификатор пользователя
Параметр | Тип | Описание |
---|---|---|
id | number | Другой идентификатор пользователя |
Action.remove
Удаляет обложку беседы
Action.rename
Переименовывает беседу
Параметр | Тип | Описание |
---|---|---|
title | string | Новое название беседы |
Api.execute
Вызывает метод API execute
Параметр | Тип | Описание |
---|---|---|
params | object | Параметры метода |
Возвращает объект описанный ниже
Параметр | Тип | Описание |
---|---|---|
response | mixed | Результат работы метода |
errors | array | Список ошибок (ExecuteError) |
Api.ismethod
Позволяет проверить метод на наличие
Параметр | Тип | Описание |
---|---|---|
method | string | Метод API |
Api_version
Возвращает текущую версию API
Cakephp auth flash message params
Auth Flash params are not working for me.
AppController:
class AppController extends Controller {
public $helpers = array(
'Session',
'Facebook.Facebook',
'Html' => array('className' => 'BoostCake.BoostCakeHtml'),
'Form' => array('className' => 'BoostCake.BoostCakeForm'),
'Paginator' => array('className' => 'BoostCake.BoostCakePaginator'),
'AssetCompress.AssetCompress',
'PhpThumb.PhpThumb'
);
public $components = array(
'Session',
'RequestHandler',
'Auth' => array(
'authenticate' => array('Custom'),
'loginRedirect' => array('controller' => 'users', 'action' => 'index'),
'logoutRedirect' => array('controller' => 'pages', 'action' => 'index'),
'flash' => array(
'element' => 'alert',
'key' => 'auth',
'params' => array(
'plugin' => 'BoostCake',
'class' => 'alert-danger'
)
)
),
);
Default layout:
Session->flash();
echo $this->Session->flash(‘auth’);
echo $this->fetch('content');
?>
I’ve debugged the params to make sure they’re outputting correctly, but when the alert pops up this is what I see:
<div id="authMessage" class="message">Username or password is incorrect</div>
Thanks in advance
Chain
Позволяет вызывать сразу разные методы со своей обработкой данных
Chat.action
Произошли изменения в беседе
Свойство | Тип | Описание |
---|---|---|
chat | number | Идентификатор беседы |
self | boolean | Изменения произведены пользователем |
Chat.create
Создана беседа
Chat.invite
Добавлен пользователь в беседу
Свойство | Тип | Описание |
---|---|---|
invite | number | Идентификатор пользователя |
Chat.kick
Пользователя исключили из беседы
Свойство | Тип | Описание |
---|---|---|
kick | number | Идентификатор пользователя |
Chat.photo.remove
Удалена обложка беседы
Chat.photo.update
Обновлена обложка беседы
Свойство | Тип | Описание |
---|---|---|
photo | object | Обложка беседы |
id – Идентификатор фотографии
owner – Идентификатор пользователя
Chat.rename
Беседа переименована
Execute
Запускает выполнение цепочки методов
Если цепочка методов пуста в результат вернётся пустой массив
Возвращает все результаты из добавленных методов
Не обязательно вызывать .execute() для получения Promise, достаточно повесить обработчики на сам объект
Простой пример применения цепочки
Executes
Вызывает один и тот же метод с массивом параметров
В случае ошибки в массиве на месте метода будет false
Параметр | Тип | Описание |
---|---|---|
method | string | Метод API |
queue | array | Очередь из параметров |
Например получить первую запись пользователей
vk
;
Getattachment
Позволяет получить прикрепления с объектов
Параметр | Тип | Описание |
---|---|---|
type | string | Тип прикрипления |
attachment | array / object | Объект прикрипления |
Пример получения прикрепления документа после загрузки
Getlargephoto
Возвращает фотографии разрешения 2560 или 1280
Параметр | Тип | Описание |
---|---|---|
photo | object | Объект фотографии |
Getmediumphoto
Возвращает фотографии разрешения 807 или 604
Параметр | Тип | Описание |
---|---|---|
photo | object | Объект фотографии |
Getsmallphoto
Возвращает фотографии разрешения 130 или 75
Параметр | Тип | Описание |
---|---|---|
photo | object | Объект фотографии |
Gettoken
Возвращает токен
Group.flag.remove
Сброс флагов диалога сообщества
Свойство | Тип | Описание |
---|---|---|
peer | number | Идентификатор назначения |
flags | array | Список флагов |
Group.flag.replace
Замена флагов диалога сообщества
Свойство | Тип | Описание |
---|---|---|
peer | number | Идентификатор назначения |
flags | array | Список флагов |
Group.flag.set
Установка флагов диалога сообщества
Свойство | Тип | Описание |
---|---|---|
peer | number | Идентификатор назначения |
flags | array | Список флагов |
Logger.setcustomoutput
Установить свой вывод ошибок вместо console.log
Параметр | Тип | Описание |
---|---|---|
handler | function | Свой обработчик вывода |
Параметр | Тип | Описание |
---|---|---|
type | string | Уровень вывода |
name | string | Компонент модуля |
args | array | Аргументы вывода |
Logger.setlevels
Устанавливает уровни вывода ошибок
По умолчанию все включены
Параметр | Тип | Описание |
---|---|---|
levels | object | Уровни вывода ошибок |
Список уровней вывода
log
– Стандартный логinfo
– Информацияwarn
– Предупрежденияerror
– Ошибкиdebug
– Информация для отладки
Например отключить уровень debug и info
Longpoll.isstarted
Возвращает состояние цикла
Longpoll.restart
Перезапускает цикл получения обновлений с обновлённым сервером
Longpoll.start
Запускает цикл получения обновлений
Longpoll.stop
Останавливает цикл получения данных с Long Poll
Longpoll.usepts
Если установить true будет генерировать событие pts с идентификатором который нужен для метода messages.getLongPollHistory
Параметр | Тип | Описание |
---|---|---|
need | boolean | Нужен ли pts |
Message
Появилось новое сообщение
Message.flag.remove
Сброс флагов сообщения
Свойство | Тип | Описание |
---|---|---|
id | number | Идентификатор сообщения |
peer | number | Идентификатор назначения |
flags | array | Список флагов |
Message.flag.replace
Замена флагов сообщения
Свойство | Тип | Описание |
---|---|---|
id | number | Идентификатор сообщения |
peer | number | Идентификатор назначения |
flags | array | Список флагов |
Message.flag.set
Установка флагов сообщения
Свойство | Тип | Описание |
---|---|---|
id | number | Идентификатор сообщения |
peer | number | Идентификатор назначения |
flags | array | Список флагов |
Message.getfwd
Разбирает пересылаемые сообщения
Сообщения при разборе будут иметь примерно такую структуру
id – Идентификатор сообщения
owner – Идентификатор пользователя
fwd – Вложенные пересылаемые сообщения
Message.hasattachment
Проверяет наличие прикрипления
Параметр | Тип | Описание |
---|---|---|
name | string | Название прикрипления |
Message.hasattachments
Проверяет наличие прикриплений
Message.hasflag
Проверяет наличие флага
Параметр | Тип | Описание |
---|---|---|
name | string | Название флага |
Message.hasfwd
Проверяет наличие пересылаемых сообщений
Message.ischat
Сообщение из беседы
Message.isdialog
Сообщение из диалога
Message.isgroup
Сообщение из сообщества
Message.read.inbox
Прочтение всех входящих сообщений
Свойство | Тип | Описание |
---|---|---|
id | number | Идентификатор сообщения |
peer | number | Идентификатор назначения |
Message.read.outbox
Прочтение всех исходящих сообщений
Свойство | Тип | Описание |
---|---|---|
id | number | Идентификатор сообщения |
peer | number | Идентификатор назначения |
Parselink
Разбирает ссылку ВКонтакте
Параметр | Тип | Описание |
---|---|---|
link | string / number | Ссылка |
Возвращает объект
Свойство | Тип | Описание |
---|---|---|
id | number | Идентификатор |
type | string | Тип ссылки |
peer | number | Идентификатор назначения |
Возможные значения type
Свойство peer присутствует только с photo, video, doc, album, topic, wall, page
Scope
Для того чтобы установить полный список разрешений передайте в scope строку all
Setoptions
Устанавливает опции модулю
Settoken
Устанавливает токен
Параметр | Тип | Описание |
---|---|---|
token | string | Токен |
Typing.chat
Пользователь начал набирать текст в беседе
Unread.count
Счётчик количества непрочитанных сообщений
Свойство | Тип | Описание |
---|---|---|
count | number | Количество непрочитанных сообщений |
Upload.album
Загрузка фотографий в альбом
В source можно передать массив в котором будет не более 5 файлов
После загрузки вернётся массив с загруженными фотографиями
Пример загрузки с передачей массива
Upload.audio
Загрузка аудиозаписей
Upload.chat
Загрузка главной фотографии для беседы
Upload.cover
Загрузка обложки сообщества
Модуль предоставляет удобную обёртку для работы с Long Poll сервером
Upload.doc
Загрузка документов
Upload.graffiti
Загрузка граффити
Поддерживаемые расширения png, svg
Upload.message
Загрузка изображения в личное сообщение
Upload.owner
Загрузка главной фотографии пользователя или сообщества
Upload.product
Загрузка фотографии для товара
Upload.selection
Загрузка фотографии для подборки товаров
Upload.video
Загрузка видеозаписей
Upload.voice
Загрузка аудиосообщения
Поддерживаемые расширения mp3, ogg
Upload.wall
Загрузка фотографий на стену
Автономное приложение (standalone)
Для авторизации необходимы опции app, key, scope, login или phone
По умолчанию scope содержит все разрешения
Для получения сервисного ключа доступа необходимы опции app, key
Авторизация
Есть несколько типов авторизации
Авторизация не заменяет токен в настройках модуля, учтите это
Авторизация через вконтакте api.
Авторизация через госуслуги
Везде идет речь о сертификате (1 файл), о закрытом ключе (1 файл) и пароле к закрытому ключу (строка)
Для обмена с ЕСИА потребуется шифрование, поэтому у вас должен быть свой RSA-ключ для подписи. Закрытый ключ находится у вас, публичный сертификат выгружается в кабинет ЕСИА.
Некие сертификаты, общедоступные по ссылке http://esia.gosuslugi.ru/public/esia.zip
Поскольку ЕСИА тоже будет присылать вам шифрованную информацию, то вам потребуется публичный сертификат ЕСИА, чтобы расшифровать эту информацию.
Файлы от заказчика содержат один файл с расширением cer
Скорей всего – это публичный сертификат. Можете попробовать его открыть. В windows должно открыться стандартное окно с информацией о сертификате.
и папку с несколькими файлами с расширением key (header.key, masks.key, primary.key и тд)
А вот тут сказать сложно. Похоже, что клиент сгенерировал ключ на флешке средствами крипто-про или наподобие, а потом просто скопировал каталог. Вот тут он не прав. Надо выяснять конкретные требования заказчика по интеграции
Для авторизации через госуслуги можно использовать, например, самоподписанные сертификаты:
Сначала создать закрытый ключ и запрос на сертификат
openssl req -newkey rsa:2048 -nodes -keyout domain.key -out domain.csr -sha256
в процессе генерации будет запрос на воод пароля к закрытому ключу.
Потом выпустить публичный сертификат для него
openssl x509 -signkey domain.key -in domain.csr -req -days 1825 -out domain.crt -sha256
у вас будет два файла domain.key (закрытый ключ) и domain.crt (сертификат). Сертификат потом надо будет выгрузить в кабинет ЕСИА.
Как мне эти данные использовать?
Очень помог в интеграции с ЕСИА пакет https://vhod-v-lichnyj-kabinet.ru/ekapusta/oauth2-esia
Описание работы с ним https://vhod-v-lichnyj-kabinet.ru/ru/post/358834/
Кстати, если посмотрите тесты на гитхабе, то найдете там мнемонику для тестовой организации и готовые ключи для нее. Можно будет протестировать.
Авторизация через официальные приложения (direct)
Для авторизации необходимы опции scope, pass, login или phone
Альтернативный вызов методов
Если метод отсутствует в списке или необходимо вызвать строкой
Параметр | Тип | Описание |
---|---|---|
method | string | Метод API |
params | object | Параметры метода |
Аутентификация пользователей на сервере
Параметры запуска имеют важную и полезную особенность — их можно использовать как аутентификационные данные на разработанном вами backend-сервисе. Это позволяет сократить время разработки и не утруждать себя написанием собственной системы аутентификации.
Вместе с параметрами запуска, как мы уже писали, передаётся sign — подпись, гарантирующая серверу корректность и правдивость параметров.
Безопасность подписи обеспечивается алгоритмом хеширования SHA-256, использующим секретный ключ вашего мини-приложения. Таким образом, не зная ключа, злоумышленник не сможет подделать параметры запуска.
Буржуазный, через веб-компоненты
Если вы решили пойти по этому пути, то вам потребуется использовать какую-либо стороннюю GUI-библиотеку (или по крайней мере JavaFX), у которой в арсенале есть свой компонент браузера. Над таким бразуером ваша программа будет иметь полную власть, и вы сможете извлечь адрес, на который вас перенаправил ВК, программными средствами. На JavaFX это можно реализовать следующим образом:
Вызов методов вконтакте api
Необходимо скопировать название из списка методов и вставить его после vk.api.<method>
На примере получение записей со стены через wall.get
Параметр | Тип | Описание |
---|---|---|
params | object | Параметры метода |
Вызов хранимой процедуры приложения
Параметр | Тип | Описание |
---|---|---|
name | string | Название процедуры |
params | object | Параметры процедуры |
Загрузка файлов
Для упрощение работы в каждый метод загрузки передевайте параметры которые нужны как для получения сервера, так и для сохранения загруженного файла
Для каждого метода загрузки существует несколько общих параметров
source – Поддерживаемые источники файлов
Если необходимо вручную указать MIME-type и названия файла воспользуйтесь такой конструкцией, особенно касается источников с типом Buffer
Необязательные параметры
Параметр | Тип | Описание | По умолчанию |
---|---|---|---|
timeout | number | Время ожидания для сброса соединения | 15000 |
uploadUrl | string | Сервер для загрузки файла | null |
Главный аргумент в методах
Параметр | Тип | Описание |
---|---|---|
params | object | Параметры загрузки |
Инициализация
Получение класса
Как быть?
Токен, полученный на клиентом, мы не можем использовать на сервере, и соответственно не можем запросить информацию о пользователе со стороны сервера, но мы можем проверить токен на валидность и узнать ид пользователя которому принадлежит данный токен.
С документации мы можем узнать что Параметр sig равен md5 от конкатенации следующих строк:
Давайте получим информацию о пользователе через open api, передадим её на сервер, проверим токен, и если все ок запишем в базу:
Как параметры запуска попадают в приложение
Каждый раз, когда мини-приложение запускается, ВКонтакте берёт указанный в настройках URL (или URL для разработки, если вы являетесь администратором приложения) и добавляет в конец строку поиска вместе с query-параметрами запуска. Таким образом, URL, доступный изнутри вашего приложения, будет иметь примерно такой вид:
Как происходит авторизация?
Авторизация ВКонтакте ничем не отличается от любой другой авторизации через сторонний сервер. Этот процесс отлично описал пользователь StackOverflow qnub:
- На сервисе (в данном случае ВК) необходимо зарегистрировать приложение и получить ключ API.
- После этого приложение (сайт) могут делать запрос личных данных пользователя у стороннего сервиса через этот самый API, для чего:
- По завершении действий пользователь будет перенаправлен сторонним сервисом посредством всё того же 302 Redirect на URL переданный в параметрах специально сформированной ссылки.
Конструктор
Инициализация новой инстанции модуля
Логгер
В модуле присутсвует свой простой логгер
Обработка apierror
Возникает когда API вернуло вместо результата работы метода, ошибку
Обработать её можно следующим образом
Полный список свойств которые можно получить из ошибки
Обработка autherror
Возникает при ошибках авторизации
Обработать её можно следующим образом
Полный список свойств которые можно получить из ошибки
Свойство | Тип | Описание |
---|---|---|
message | string | Описание ошибки |
Обработка executeerror
Возникает при работе с методом API execute
Обработать её можно следующим образом
Полный список свойств которые можно получить из ошибки
Свойство | Тип | Описание |
---|---|---|
message | string | Описание ошибки |
code | number | Код ошибки |
method | string | Метод API |
Обработка requesterror
Возникает при проблемах в соединении или ответа сервера с ошибкой (не путать с ApiError)
Обработать её можно следующим образом
Полный список свойств которые можно получить из ошибки
Обработка uploaderror
Возникает когда при загрузке файла произошла ошибка
Обработать её можно следующим образом
Полный список свойств которые можно получить из ошибки
Свойство | Тип | Описание |
---|---|---|
message | string | Описание ошибки |
Обработка исключений
Во всех примерах выше использовался данный способ обработки ошибок
Но в приложениях не один модуль и по этому необходимо обрабатывать исключения для каждого модуля свои, да и ошибки могут быть разные
Опции vk
Параметр | Тип | Описание | По умолчанию |
---|---|---|---|
id | number | Идентификатор пользователя | null |
login | string | Email/телефон от аккаунта | null |
phone | number | Номер телефона | null |
pass | string | Пароль пользователя | null |
token | string | Токен | null |
app | number | ID приложения | null |
key | string | Секретный ключ прилржения | null |
scope | string | Список разрешений | max scope |
limit | number | Максимальное кол-во запросов в секунду | 3 |
timeout | number | Время сброса соединения на API | 6000 |
proxy | string | Установка прокси сервера | null |
restartError | boolean | Перезапускать ли при ошибках запрос | true |
restartCount | number | Количество попыток перезапуска | 3 |
restartWait | number | Время ожидания перезапуска | 3000 |
Немного дополнительной информации
Отлов любой ошибки модуля
Все ошибки модуля наследуют класс VKError, с ним вы сможете поймать любое исключение модуля vk-io
Если обработчик captcha не установлен, то в .catch будет возвращаться ошибка ApiError с кодом №14
Если в вашем приложение нужно организовать обработку captcha не повторяя запросы вручную, можно установить универсальный обработчик
Параметр | Тип | Описание |
---|---|---|
handler | function | Обработчик captcha |
Параметр | Тип | Описание |
---|---|---|
src | string | Url изображения капчи |
sid | number | Идентификатор captcha |
retry | function | Повторить запрос с текстом captcha |
Передача параметров запуска на сервер
Для того чтобы получить список параметров запуска в строковом виде, достаточно
обратиться к window.location.search:
Если необходимо конвертировать параметры из строкового вида в объект, воспользуемся встроенной в node библиотекой querystring:
Получение ссылок фотографий с объекта photo
Есть 3 метода для получение ссылки с объекта photo
Если метод не находит ссылку на фотографию он будет искать более меньшего размера пока не найдёт существующие разрешение
Пример работы с методами
На примере получения фотографии Павла Дурова
Проблема 1
Полученный токен(sig) привязывается к ip-адресу, и при попытке использовать его на сервере вам выдаст ошибку:
Проблема 2
При таком способе авторизации нет возможности получить email пользователя, даже если вы запросите нужные права и пользователь даст согласие — вы не получите email в ответе.
Проверка авторизации
Давайте создадим модель, которая будет содержать информацию о пользователе:
Работа с коллекциями
Позволяет получить произвольное количество данных с методов в которых присутствуют параметры offset и count
Список необязательных параметров
Параметр | Тип | Описание | По умолчанию |
---|---|---|---|
offset | number | Ручное смещение | 0 |
count | number | Сколько нужно получить данных | Все |
maxCalls | number | Количество вызовов методов за раз | 25 |
В случаях если вы получаете ошибку 13 с комментарием response size is too big укажите меньше количество запросов параметром maxCalls
Первый режим работы коллекций основанный на потоках, на примере получение записей со стены пользователя
Так же можно получить все данные единоразово через интерфейс Promise
Учтите, если вы используете потоковый режим, не используйте Promise
для того что бы узнать когда завешится процес получения данных, так как он будет сохранять данные для передачи в Promise
Работа с цепочкой методов
Цепочки методов работают на API execute
Можно передать неограниченное количество методов в цепочку
Тем самым позволяя вызывать не один метод за раз, а сразу по 25
События беседы
События которые произошли в беседе, общие свойства
Тесты
Для запуска теста нужно написать в консоль
Установка
Требуется Node.js 6.0.0 или новее
Шаг второй. формирование специальной ссылки
Далее вам нужно направить пользователя по специально сформированному адресу (её упоминания выделены жирным цветом в первом разделе статьи), где он подтвердит, что хочет разрешить вашему приложению выполнять какие-то действия со своим аккаунтом. Как же формируется эта ссылка?
Этот процесс подробно описан в документации. Однако, если вы обратились к этой статье, я предполагаю, что вам не хватило информации в документации, и поэтому перескажу всё своими словами. Ссылка имеет следующий вид: хост?параметры. Параметры имеют вид нескольких пар вида ключ=значение разделённых символами &.
Append
Добавляет метод в очередь
Учтите, если был вызван .execute()
и вызвать .append()
выбросится синхронное исключение
Параметр | Тип | Описание |
---|---|---|
method | string | Метод API |
params | object | Параметры метода |
Заключение
Таким образом, мы научились получать access token ВКонтакте, с помощью которого можно вызывать методы API. Если эта статья вызовет у сообщества интерес, в следующей статье я опишу, как вызывать те или иные API-методы с помощью токена, как проверять токен на валидность (метод secure.checkToken(), конечно), и напишу какое-нибудь демонстрационное приложение, например, для сохранения всей музыки из плейлиста на компьютер.