Авторизация позволяет получить доступ к дочернему аккаунту, чтобы подключать каналы, отправлять сообщения и выполнять другие действия от имени клиента.
Используйте этот вариант авторизации, если работаете по Wazzup Label. Клиент зарегистрируется или войдёт в аккаунт Wazzup → подтвердит доступ партнёра к своему аккаунту через iframe/редирект, а вы получите client_access_token и refresh_token клиента, которые позволяют выполнять запросы от его имени.
Для работы с описанными методами используйте Basic-авторизацию с вашими данными для входа в кабинет партнёра Wazzup: Authorization: Basic base64(email:password)
На первом шаге вы создаёте ссылку, по которой клиенту необходимо залогиниться в Wazzup.
Когда создадите ссылку с заполненными параметрами, направьте клиента по этой ссылке → клиент войдёт в Wazzup → вы получите на ваш redirect_uri код в параметре code, который сможете обменять на пользовательские токены на втором шаге.
Метод: GET /v2/oauth/authorize
Query-параметры:
Мы используем OAuth с расширением PKCE, Поэтому в запросах нужно использовать code_verifier и code_challenge.
code_verifier — это секретная случайная строка, которая:
-, ., _, ~Пример: dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk
code_challenge — это защищённое представление code_verifier, которое:
code_verifier алгоритмом SHA-256| Параметр. Обязательные отмечены * | Пример | Описание |
response_type* |
code |
Код авторизации. Укажите code |
client_id* |
your_client_id |
Выдаётся менеджером партнёрки |
redirect_uri* |
https://your.website/callback |
Ссылка, на которую перенаправим вашего клиента после логина в Wazzup. Если вы пока разрабатываете интеграцию и не сообщили нам redirect_uri, то укажите в значении |
scope* |
transport, crm |
Список разрешений, которые запрашиваете у пользователя. Указывайте transport, crm |
state* |
state_tech_partner_123 |
Анти-CSRF токен для безопасности. Сгенерируйте самостоятельно |
code_challenge* |
<base64url(SHA256(code_verifier))> |
Преобразованное значение code_verifier методом S256. Сам code_verifier не передавайте в запросе на этом шаге |
code_challenge_method* |
S256 |
Рекомендуемый метод хэширования. Указывайте S256 |
Пример запроса:
GET https://tech.wazzup24.com/v2/oauth/authorize ?response_type=code &client_id=partner_client_id &redirect_uri=https%3A%2F%2Fyour.website%2Fcallback &scope=transport%2Ccrm &state=state_tech_partner_123 &code_challenge=EADnwig85jbEO4pP09-AMi-JnGf7VnO9DS9rvHsq5sY &code_challenge_method=S256
Когда клиент залогинится в Wazzup по ссылке, Wazzup сделает редирект на ваш redirect_uri с параметрами:?code=...&state=....
Проверьте, что полученный от нас и переданный вами в запросе state совпадают.
Сохраните значение code из адресной строки браузера: нужно скопировать значение "code=" до знака "&state".
| code | Когда возникает | Что делать |
VALIDATION_FAILED |
Ошибка валидации входных данных | Проверьте корректность параметров запроса |
OAUTH_REDIRECT_URI_INVALID |
Указан некорректный redirect_uri |
Используйте redirect_uri, зарегистрированный в системе Wazzup |
OAUTH_PARTNER_NOT_FOUND |
Партнёр не найден | Убедитесь, что client_id передан правильно |
OAUTH_PARTNER_NOT_ACTIVE |
Партнёр не активен | Обратитесь к менеджеру для активации партнёра |
OAUTH_SCOPE_FORBIDDEN |
Запрошенный scope запрещён |
Согласуйте запрашиваемые права (scope) с менеджером |
Метод: POST /v2/oauth/token
| Body-параметр. Обязательные отмечены * | Тип параметра | Описание параметра |
grant_type* |
string |
Тип OAuth-гранта. Укажите authorization_code |
authorize_code_data* |
object |
Данные, необходимые для authorization_code |
authorize_code_data.code* |
string |
Код авторизации, полученный на шаге 1 |
authorize_code_data.redirect_uri* |
string |
Ссылка, на которую перенаправим вашего клиента после логина в Wazzup. Если вы пока разрабатываете интеграцию и не сообщили нам redirect_uri, то укажите в значении |
authorize_code_data.client_id* |
string |
client_id, который вы получили у менеджера Wazzup |
authorize_code_data.code_verifier |
string |
code_verifier, который вы создали на первом шаге. В этом запросе передайте оригинальный code_verifier, а не его хэшированную версию |
Пример запроса:
curl -X POST 'https://tech.wazzup24.com/v2/oauth/token' \
-H 'Authorization: Basic base64(email:password)' \
-H 'Content-Type: application/json' \
-d '{
"grant_type": "authorization_code",
"authorize_code_data": {
"code": "AUTH_CODE_FROM_REDIRECT",
"redirect_uri": "https://your.app/callback",
"client_id": "your_client_id",
"code_verifier": "ORIGINAL_CODE_VERIFIER"
}
}'
Пример ответа:
{
"data": {
"access_token": "eyJhbGciOieyJhbGciOieyJhbGciOieyJhbGciOieyJhbGciOieyJhbGciOieyJhbGciOieyJhbGciOi",
"refresh_token": "def50200def50200def50200def50200def50200def50200def50200",
"token_type": "Bearer",
"expires_in": 86400
},
"meta": {
"timestamp": 1759481570
}
}
Результат: у вас есть client_access_token (в ответе указан как access_token) клиента для вызовов API и refresh_token для продления.
Теперь вы можете добавлять каналы, отправлять сообщения и выполнять другие действия.
Все вызовы от лица клиента подписывайте заголовком: Authorization: Bearer <client_access_token>
| Код | Когда возникает | Что делать |
VALIDATION_FAILED |
Ошибка валидации входных данных | Проверьте корректность передаваемых данных |
OAUTH_INVALID_GRANT_TYPE |
Указан недопустимый тип grant | Убедитесь, что значение grant_type указано корректно |
OAUTH_REDIRECT_URI_INVALID |
Указан некорректный redirect_uri |
Используйте redirect_uri, согласованный с Wazzup |
OAUTH_AUTHORIZATION_CODE_INVALID |
Недействительный код авторизации | Запросите новый код авторизации — переданный истёк или не принадлежит вашему клиенту |
OAUTH_CODE_CHALLENGE_METHOD_UNKNOWN |
Неизвестный метод PKCE (code_challenge_method) |
Используйте поддерживаемый метод PKCE (S256, PLAIN) |
OAUTH_CODE_VERIFIER_INVALID |
Недействительный или отсутствующий code_verifier |
Проверьте корректность формирования и передачи code_verifier |
OAUTH_REQUESTED_SUBJECT_MISMATCH |
Запрошенный subject не совпадает с ожидаемым | Убедитесь, что используете корректный machine-токен |
OAUTH_SUBJECT_TOKEN_TYPE_MISMATCH |
Несоответствие типа subject_token_type |
Проверьте правильность переданного типа subject_token_type |
OAUTH_CLIENT_ID_MISMATCH |
Несовпадение client_id |
Убедитесь, что client_id передан правильно и принадлежит вашему приложению |
OAUTH_REFRESH_TOKEN_INVALID_OR_EXPIRED |
Недействительный или просроченный refresh_token |
Повторите процесс авторизации, чтобы получить новую пару токенов |
OAUTH_AUTHORIZATION_HEADER_INVALID |
Недействительный заголовок авторизации | Проверьте правильность передачи токена в заголовке Authorization |
OAUTH_INVALID_PARTNER_TOKEN |
Неверный или просроченный partner_token |
Уточните актуальность токена у менеджера или используйте действительный partner_token |
OAUTH_TOKEN_INVALID_OR_EXPIRED |
Токен недействителен или истёк | Выполните обновление токена или повторите процесс авторизации |
OAUTH_TOKEN_UNKNOWN_OR_REVOKED |
Токен неизвестен или был отозван | Повторите процесс авторизации или обновите токен |
OAUTH_PARTNER_NOT_FOUND |
Партнёр не найден | Уточните детали у менеджера Wazzup |
OAUTH_PARTNER_NOT_ACTIVE |
Партнёр не активен | Обратитесь к менеджеру для активации партнёра |
OAUTH_CLIENT_NOT_CHILD_OF_PARTNER |
Клиент не является дочерним у партнёра | Проверьте, что клиент действительно принадлежит вашему партнёрскому аккаунту |
OAUTH_SCOPE_FORBIDDEN |
Запрошенный scope запрещён | Согласуйте необходимые права (scope) с менеджером |
OAUTH_MISSING_GRANT |
Клиент не предоставил доступы или аннулировал их | Клиенту заново необходимо пройти oauth идентификацию |
После авторизации: