1. Συλλογή στο πρόγραμμα περιήγησης
Ο δημόσιος φορτωτής είναι η μόνη έκδοση για πρόγραμμα περιήγησης που έχει επαληθευτεί επί του παρόντος. Επιστρέφει ένα αναγνωριστικό συσκευής ή μια κατάσταση σφάλματος· δεν λαμβάνει ποτέ διαπιστευτήριο διακομιστή.
<script src="https://collect.noxtica.com/collector/noxtica-collector-core.js" data-site-key="pk_example_replace_me" data-extensions="auto" data-auto-init data-auto-check-once async></script>
<script>
document.addEventListener('noxtica:collected', (event) => {
const deviceId = event.detail?.fingerprintId;
document.dispatchEvent(new CustomEvent('app:noxtica-evidence', {
detail: deviceId ? { state: 'received', deviceId } : { state: 'invalid' },
}));
});
document.addEventListener('noxtica:error', () => {
document.dispatchEvent(new CustomEvent('app:noxtica-evidence', {
detail: { state: 'unavailable' },
}));
});
</script>
2. Ανάγνωση στον διακομιστή σας
Στείλτε το αναγνωριστικό συσκευής στο backend σας και κατόπιν καλέστε την πιστοποιημένη διαδρομή v1 με κλειδί που διατηρείται στον διακομιστή.
export async function lookupDevice({ deviceId, apiKey, fetchImpl = fetch }) {
const response = await fetchImpl(
`https://collect.noxtica.com/v1/device/${encodeURIComponent(deviceId)}`,
{ headers: { Authorization: `Bearer ${apiKey}` } },
);
if (response.status === 404) return { state: 'missing' };
if (response.status === 429) return { state: 'rate_limited' };
if (!response.ok) return { state: 'unavailable' };
return { state: 'received', record: await response.json() };
}
3. Διατηρήστε διακριτές τις καταστάσεις αποτελέσματος
Μόνο μια πλήρης εγγραφή που έχει ληφθεί εισέρχεται στην αριθμητική πολιτική. Οι καταστάσεις έλλειψης, μη εγκυρότητας, περιορισμού ρυθμού και μη διαθεσιμότητας ακολουθούν ρητές εναλλακτικές λύσεις του πελάτη.
export function classifyLookup(result) {
if (!result || result.state === 'unavailable') return { state: 'unavailable' };
if (result.state === 'rate_limited') return { state: 'rate_limited' };
if (result.state === 'missing') return { state: 'missing' };
const record = result.record;
if (!record || typeof record.score !== 'number' || typeof record.confidence !== 'number') {
return { state: 'invalid' };
}
return {
state: 'received',
score: record.score,
riskLevel: record.riskLevel,
confidence: record.confidence,
};
}