Secret oluştur
Kullanıcınızı 2FA sistemine kaydetmek için secret üretin. Kullanıcıya gösterin, Touchque mobil uygulamasında girerek cihazını bağlar.
POST/auth/generate-secret
Gövde parametreleri
| Parametre | Tip | Açıklama |
|---|---|---|
externalUsername | string | Sizin user ID Zorunlu |
Secret sadece bu yanıtta döner. Süre: 5 dakika.
İstek
const { Touchque } = require('@touchque/node');
const tq = new Touchque({
apiKey: 'tq_abc123',
apiSecret: 'YOUR_API_SECRET'
});
async function setupUser() {
// Kullanıcı için yeni bir secret oluştur (5 dk geçerli)
const result = await tq.auth.generateSecret({
externalUsername: 'user@yourcompany.com'
});
// result = { secret: "A1B2...", expiresAt: "2026-05-18...", ttlMs: 300000, externalUsername: "..." }
// ⚠️ Secret sadece bu yanıtta döner!
console.log('Secret:', result.secret);
}
setupUser();<?php
require_once 'vendor/autoload.php';
use Touchque\Touchque;
use Touchque\Config;
$config = new Config(
'tq_abc123',
'YOUR_API_SECRET'
);
$tq = new Touchque($config);
// Kullanıcı için yeni bir secret oluştur (5 dk geçerli)
$result = $tq->auth->generateSecret('user@yourcompany.com');
// result = ['secret' => 'A1B2...', 'expiresAt' => '2026...', 'externalUsername' => '...']
// ⚠️ Secret sadece bu yanıtta döner!
echo "Secret: " . $result['secret'];package main
import (
"fmt"
"log"
"github.com/Touchque/touchque-go/v5/touchque"
)
func main() {
tq, err := touchque.New(touchque.DefaultConfig("tq_abc123", "YOUR_API_SECRET"))
if err != nil {
log.Fatal(err)
}
// Kullanıcı için yeni bir secret oluştur (5 dk geçerli)
result, err := tq.Auth.GenerateSecret("user@yourcompany.com")
if err != nil {
log.Fatal(err)
}
// result = &touchque.GenerateSecretResponse{Secret: "A1B2...", ExpiresAt: "2026...", QRCodeDataURL: "data:image/png;base64,...", ...}
// ⚠️ Secret sadece bu yanıtta döner!
fmt.Println("Secret:", result.Secret)
}from touchque import Touchque, Config
tq = Touchque(Config(
api_key="tq_abc123",
api_secret="YOUR_API_SECRET"
))
# Kullanıcı için yeni bir secret oluştur (5 dk geçerli)
result = tq.auth.generate_secret("user@yourcompany.com")
# result = {'secret': 'A1B2...', 'expiresAt': '2026...', 'externalUsername': '...'}
# ⚠️ Secret sadece bu yanıtta döner!
print("Secret:", result["secret"])using Touchque;
var tq = new TouchqueClient(new TouchqueOptions { ApiKey = "tq_abc123", ApiSecret = "YOUR_API_SECRET" });
// Kullanıcı için yeni bir secret oluştur (5 dk geçerli)
var result = await tq.Auth.GenerateSecretAsync("user@yourcompany.com");
// ⚠️ Secret sadece bu yanıtta döner!
Console.WriteLine($"Secret: {result.Secret}");import com.touchque.TouchqueClient;
import com.touchque.TouchqueOptions;
var tq = new TouchqueClient(new TouchqueOptions().apiKey("tq_abc123").apiSecret("YOUR_API_SECRET"));
// Kullanıcı için yeni bir secret oluştur (5 dk geçerli)
JsonNode result = tq.auth().generateSecret("user@yourcompany.com");
// ⚠️ Secret sadece bu yanıtta döner!
System.out.println("Secret: " + result.path("secret").asText());require "touchque"
tq = Touchque::Client.new(api_key: "tq_abc123", api_secret: "YOUR_API_SECRET")
# Kullanıcı için yeni bir secret oluştur (5 dk geçerli)
result = tq.auth.generate_secret("user@yourcompany.com")
# ⚠️ Secret sadece bu yanıtta döner!
puts "Secret: #{result["secret"]}"# 1) İmza oluştur
BODY='{"externalUsername": "user@yourcompany.com"}'
BODY_HASH=$(echo -n "$BODY" | openssl dgst -sha256 | awk '{print $2}')
TS=$(date +%s000)
NONCE=$(openssl rand -hex 16)
MSG="POST:/auth/generate-secret:$TS:$NONCE:$BODY_HASH"
SIG=$(echo -n "$MSG" | openssl dgst -sha256 -hmac "YOUR_API_SECRET" | awk '{print $2}')
# 2) İstek gönder
curl -X POST https://api.touchque.com/auth/generate-secret \
-H "x-api-key: tq_abc123" \
-H "x-signature: $SIG" \
-H "x-timestamp: $TS" \
-H "x-nonce: $NONCE" \
-H "Content-Type: application/json" \
-d "$BODY"Cevap 200
{
"secret": "A1B2C3D4E5F6A7B8C9D0E1F2",
"qrCodeDataUrl": "data:image/png;base64,…",
"externalUsername": "user@yourcompany.com",
"expiresAt": "2026-11-02T12:05:00.000Z",
"ttlMs": 300000,
"recoveryCodes": ["…", "…"]
}