Skip to Content

Интеграции позволяют расширить возможности Revroute и обеспечить бесшовное подключение к сторонним платформам и сервисам.

Вы можете создавать собственные интеграции с Revroute, используя наш API.

  1. Ознакомьтесь с документацией по созданию ссылок или отслеживанию конверсий продаж.
  2. Узнайте, как интегрировать Revroute в ваше приложение.
  3. Свяжитесь с нами , чтобы разместить вашу интеграцию в маркетплейсе интеграций.

В этом руководстве вы узнаете, как создавать и управлять интеграциями в 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_uriURL для перенаправления пользователя после авторизации приложения. Убедитесь, что этот 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

OAuth consent screen

Обменяйте код на токен доступа

Параметр 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Доступ на чтение информации о пользователе. Эта область включена по умолчанию.

Примеры

github

Пример OAuth 2.0

Полный пример на GitHub.

Интеграция через API-ключи (не рекомендуется)

Revroute также поддерживает аутентификацию через API-ключи; однако это не рекомендуется для создания интеграций. Этот метод следует использовать только для внутренних интеграций или личных проектов, не требующих согласия пользователя.

Подробнее об API-ключах.

Last updated on