Browser API
Hosted popup, Connect redirect и Vanilla JS bundle.
Browser API
Browser-клиенты доступны из @orria/tapok и @orria/tapok/browser. Корневой entrypoint дополнительно экспортирует общие типы и низкоуровневые helpers; для обычной интеграции используйте показанные ниже клиенты.
Hosted — Tapok
Hosted не требует регистрации приложения, client_id или API key.
import { Tapok } from '@orria/tapok/browser'
const tapok = new Tapok({
baseUrl: 'https://tapok.orria.space', // можно не указывать для production Tapok
})
loginButton.onclick = async () => {
// Popup должен открываться непосредственно из пользовательского события.
const result = await tapok.login()
// Псевдокод: backend обязан проверить token до создания своей сессии.
await postToOwnBackend('/api/session', { token: result.token })
}
Методы:
login(options?)— открывает Hosted popup и возвращаетHostedAuthResult;getSession()— читает ещё действующий локальный результат;logout()— удаляет локальный результат;refresh()— fail-closed сsession_expired, пока silent refresh недоступен.
Connect — createTapokConnect()
Connect требует зарегистрированное приложение. API key никогда не помещается в этот browser-код.
import { createTapokConnect } from '@orria/tapok/browser'
const connect = createTapokConnect({
clientId: 'tapok_…',
redirectUri: 'https://app.example/auth/callback',
scopes: ['session', 'profile:display_name'],
})
loginButton.onclick = () => connect.startSignIn()
// На странице redirectUri:
const callback = connect.finishSignIn()
if (callback) {
// Псевдокод: отправьте code и PKCE verifier своему backend.
await postToOwnBackend('/api/connect/exchange', callback)
}
startSignIn({ loginHint? }) начинает redirect. finishSignIn({ url? }) проверяет state и возвращает code, PKCE verifier, redirect URI и client ID.
Vanilla JS — tapok.js и vanilla.js
Оба package path ведут к одному browser bundle и публикуют window.Tapok:
<script src="https://tapok.orria.space/tapok.js"></script>
<button id="login">Войти через Tapok</button>
<script>
login.onclick = async () => {
const result = await window.Tapok.login()
await postToOwnBackend('/api/session', { token: result.token })
}
</script>
При установке из npm bundle также доступен как @orria/tapok/tapok.js и @orria/tapok/vanilla.js. Пути tapok.ts и tapok.d.ts предназначены для исходного TypeScript bundle и его деклараций, а не являются отдельным режимом авторизации.