Vue
Vue
@orria/tapok/vue реэкспортирует browser-клиенты Tapok и createTapokConnect. SDK не регистрирует Vue plugin и не предоставляет готовые компоненты.
Hosted
<script setup lang="ts">
import { ref } from 'vue'
import { Tapok } from '@orria/tapok/vue'
const tapok = new Tapok()
const pending = ref(false)
async function login() {
pending.value = true
try {
const result = await tapok.login()
// Псевдокод: backend проверит token и создаст HttpOnly-сессию.
await api.createSession({ token: result.token })
} finally {
pending.value = false
}
}
</script>
<template>
<button :disabled="pending" @click="login">Войти через Tapok</button>
</template>
Popup запускается непосредственно из @click.
Connect
<script setup lang="ts">
import { onMounted } from 'vue'
import { createTapokConnect } from '@orria/tapok/vue'
const connect = createTapokConnect({
clientId: 'tapok_…',
redirectUri: 'https://app.example/auth/callback',
scopes: ['session', 'phone'],
})
function login() {
return connect.startSignIn()
}
onMounted(async () => {
if (location.pathname !== '/auth/callback') return
const callback = connect.finishSignIn()
if (callback) await api.exchangeConnectCode(callback) // собственный backend
})
</script>
<template>
<button @click="login">Войти</button>
</template>
API key нужен только backend при exchangeConnectCode() и не должен находиться в Vue-коде.