Интеграции позволяют расширить возможности Revroute и обеспечить бесшовное подключение к сторонним платформам и сервисам.
Вы можете создавать собственные интеграции с Revroute, используя наш API.
- Ознакомьтесь с документацией по созданию ссылок или отслеживанию конверсий продаж.
- Узнайте, как интегрировать Revroute в ваше приложение.
- Свяжитесь с нами , чтобы разместить вашу интеграцию в маркетплейсе интеграций.
В этом руководстве вы узнаете, как создавать и управлять интеграциями в Revroute, позволяя встроить платформу атрибуции ссылок Revroute в ваше приложение.
Интеграция через OAuth 2.0 (рекомендуется)
Revroute поддерживает аутентификацию OAuth 2.0, которая рекомендуется при создании интеграций, расширяющих функциональность Revroute.
Мы рекомендуем использовать клиентскую библиотеку OAuth для интеграции потока OAuth. Рекомендуемые библиотеки для различных языков программирования можно найти здесь .
Эндпоинты OAuth (/oauth/authorize, /oauth/token, /oauth/userinfo) не
доступны в SDK Revroute. Вам потребуется вызывать эти эндпоинты напрямую
через HTTP-запросы или клиентскую библиотеку OAuth.
Настройка OAuth 2.0
Вот пошаговое руководство по настройке аутентификации OAuth 2.0 с Revroute.
Создайте OAuth2-приложение в Revroute
- Перейдите на вкладку OAuth Apps в вашем рабочем пространстве.
- Нажмите Create OAuth App.
- Заполните необходимые поля для создания OAuth2-приложения.
Перенаправьте пользователей на URL авторизации
Когда вы хотите аутентифицировать пользователя, необходимо перенаправить его на URL авторизации Revroute OAuth.
GET https://app.revroute.ru/oauth/authorizeПараметры:
| Свойство | Описание |
|---|---|
client_id | Идентификатор клиента вашего OAuth-приложения. |
redirect_uri | URL для перенаправления пользователя после авторизации приложения. Убедитесь, что этот URL зарегистрирован в вашем OAuth-приложении. |
response_type | Ожидаемый тип ответа. Должен быть code. |
scope | Список областей доступа, разделённых пробелами, к которым вы хотите запросить доступ. Подробнее об областях доступа здесь. |
state | Параметр state для защиты от CSRF-атак. Подробнее здесь |
code_challenge | Обязателен для PKCE. Code challenge, сгенерированный из code_verifier. |
code_challenge_method | Обязателен для PKCE. Метод генерации code challenge. Должен быть S256. |
PKCE (Proof Key for Code Exchange) включён по умолчанию и рекомендуется для всех приложений. Если вы включаете code_challenge и code_challenge_method в запрос авторизации, вы также должны включить code_verifier при обмене кода на токен доступа на шаге 3.
Пример URL:
GET https://app.revroute.ru/oauth/authorize?client_id=YOUR_CLIENT_ID&redirect_uri=YOUR_REDIRECT_URI&response_type=code&scope=SOME_SCOPE&state=SOME_STATE&code_challenge=YOUR_CODE_CHALLENGE&code_challenge_method=S256
Обменяйте код на токен доступа
Параметр code возвращается в строке запроса при перенаправлении пользователя обратно в ваше приложение. Вы можете обменять этот код на токен доступа, отправив POST-запрос на URL токена Revroute OAuth.
POST https://api.dub.co/oauth/tokenЗаголовок Content-Type должен быть установлен в application/x-www-form-urlencoded.
Мы рекомендуем использовать поток PKCE для всех приложений, особенно нативных десктопных или мобильных приложений и одностраничных приложений (SPA), где client_secret не может быть скрыт.
При использовании PKCE client_secret никогда не отправляется на сервер авторизации, что предотвращает утечку client_secret из клиентского приложения.
await fetch("https://api.dub.co/oauth/token", {
method: "POST",
headers: {
"Content-Type": "application/x-www-form-urlencoded",
},
body: new URLSearchParams({
code: "YOUR_AUTHORIZATION_CODE",
client_id: "YOUR_CLIENT_ID",
code_verifier: "YOUR_CODE_VERIFIER",
redirect_uri: "YOUR_REDIRECT_URI",
grant_type: "authorization_code",
}),
});Параметры:
| Свойство | Описание |
|---|---|
code | Код, полученный при перенаправлении пользователя обратно в ваше приложение. |
client_id | Идентификатор клиента вашего OAuth-приложения. |
code_verifier | Исходный code verifier, использованный для генерации code_challenge на шаге 2. |
redirect_uri | Тот же URI перенаправления, который вы использовали в URL авторизации. |
grant_type | Тип гранта. Должен быть authorization_code. |
Например, расширение Revroute для Raycast использует PKCE для аутентификации пользователей.
Ответ:
После успешного запроса вы получите JSON-ответ с токеном доступа.
{
"access_token": "dub_access_token_ae8ebf6f97e6200d886ef48a5...",
"refresh_token": "7f5acfbe14bca0a20fe6e430ddb7bb494eed160bd...",
"token_type": "Bearer",
"expires_in": 7200,
"scope": "links.write tags.write domains.read"
}Получите информацию о пользователе и рабочем пространстве
После получения токена доступа вы можете получить информацию об аутентифицированном пользователе и его рабочем пространстве, вызвав эндпоинт userinfo:
GET https://api.dub.co/oauth/userinfoПример с использованием curl:
curl --request GET \
--url https://api.dub.co/oauth/userinfo \
--header 'Authorization: Bearer <ACCESS_TOKEN>'Ответ:
{
"id": "user_id",
"name": "John Doe",
"image": "https://example.com/avatar.png",
"workspace": {
"id": "ws_abc123",
"slug": "acme",
"name": "Acme Inc",
"logo": "https://example.com/logo.png"
}
}Выполните API-запрос с токеном доступа
Получив действующий токен доступа, вы можете использовать его для выполнения запросов к API Revroute.
Вы можете инициализировать SDK Revroute с токеном доступа.
Вот пример создания ссылки с помощью TypeScript SDK Revroute:
import { Revroute } from "dub";
const dub = new Revroute({
token: <ACCESS_TOKEN>,
});
const link = await dub.links.create({
url: "https://google.com",
});Или передайте токен доступа в заголовке: Authorization: Bearer <ACCESS_TOKEN>
curl --request POST \
--url https://api.dub.co/links \
--header 'Authorization: Bearer <ACCESS_TOKEN>' \
--header 'Content-Type: application/json'Обновите токен доступа
Токены доступа Revroute являются краткосрочными, в зависимости от значения expires_in (значение по умолчанию — 7 200 секунд, или 2 часа). Revroute вернёт ответ 401 Unauthorized, если вы попытаетесь использовать просроченный токен доступа.
Для обновления токена доступа необходимо отправить POST-запрос на URL токена Revroute OAuth с refresh_token, полученным при обмене кода на access_token.
POST https://api.dub.co/oauth/tokenЗаголовок Content-Type должен быть установлен в application/x-www-form-urlencoded.
Параметры:
| Свойство | Описание |
|---|---|
client_id | Идентификатор клиента вашего OAuth-приложения. |
client_secret | Секрет клиента вашего OAuth-приложения. |
grant_type | Тип гранта. Должен быть refresh_token. |
refresh_token | Токен обновления, полученный при обмене кода на токен доступа. |
Ответ:
После успешного запроса вы получите JSON-ответ с новым токеном доступа.
{
"access_token": "dub_access_token_ae8ebf6f97e6200d886ef48a5...",
"refresh_token": "7f5acfbe14bca0a20fe6e430ddb7bb494eed160bd...",
"token_type": "Bearer",
"expires_in": 7200,
"scope": "links.write tags.write domains.read"
}Это аннулирует старый токен доступа и токен обновления.
Области доступа (Scopes)
Вы можете запросить доступ к определённым областям при перенаправлении пользователей на URL авторизации Revroute OAuth. Области доступа — это разрешения, которые пользователь должен предоставить вашему приложению.
Revroute поддерживает следующие области доступа для OAuth 2.0:
| Область доступа | Описание |
|---|---|
links.read | Доступ на чтение ссылок. |
links.write | Доступ на запись ссылок. |
tags.read | Доступ на чтение тегов. |
tags.write | Доступ на запись тегов. |
analytics.read | Доступ на чтение аналитики. |
domains.read | Доступ на чтение доменов. |
domains.write | Доступ на запись доменов. |
folders.read | Доступ на чтение папок. |
folders.write | Доступ на запись папок. |
user.read | Доступ на чтение информации о пользователе. Эта область включена по умолчанию. |
Примеры
Интеграция через API-ключи (не рекомендуется)
Revroute также поддерживает аутентификацию через API-ключи; однако это не рекомендуется для создания интеграций. Этот метод следует использовать только для внутренних интеграций или личных проектов, не требующих согласия пользователя.
Подробнее об API-ключах.