0.2.1 • Published 10 months ago
@authsignal/react v0.2.1
Authsignal React SDK
React components for Authsignal.
Installation
Add @authsignal/react
to your package.json
dependencies.
NPM
npm install @authsignal/react
Yarn
yarn add @authsignal/react
Usage
Render the AuthsignalProvider
component at the root of your app.
import { Authsignal } from '@authsignal/react';
function App() {
return (
<AuthsignalProvider tenantId="YOUR_TENANT_ID" baseUrl="YOUR_BASE_URL">
<Checkout />
</AuthsignalProvider>
);
}
Import the useAuthsignal
hook in your component.
Then pass the challengeOptions
returned from your server to the startChallenge
function.
import { useAuthsignal } from '@authsignal/react';
export function Checkout() {
const { startChallenge } = useAuthsignal();
const handlePayment = async () => {
const response = await fetch('/api/payment', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
});
const data = await response.json();
if (data.token) {
startChallenge({
token: data.token,
onChallengeSuccess: ({ token }) => {
// Challenge was successful
},
onCancel: () => {
// User cancelled the challenge
},
onTokenExpired: () => {
// Token expired
},
});
}
};
return (
<div>
<button type="button" onClick={handlePayment}>Pay</button>
</div>
);
}
Alternatively, you can use the startChallengeAsync
function to work with promises.
import { useAuthsignal, ChallengeError } from '@authsignal/react';
export function Checkout() {
const { startChallengeAsync } = useAuthsignal();
const handlePayment = async () => {
const response = await fetch('/api/payment', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
});
const data = await response.json();
if (data.token) {
try {
const { token } = await startChallengeAsync({
token: data.token,
});
// Challenge was successful
} catch (e) {
if (e instanceof ChallengeError) {
if (e.code === "USER_CANCELED") {
// User cancelled the challenge
} else if (e.code === "TOKEN_EXPIRED") {
// Token expired
}
}
}
}
};
return (
<div>
<button type="button" onClick={handlePayment}>Pay</button>
</div>
);
}
0.2.1
10 months ago
0.2.0
10 months ago
0.1.1
10 months ago
0.1.0
10 months ago
0.0.15
10 months ago
0.0.14
10 months ago
0.0.13
10 months ago
0.0.12
10 months ago
0.0.11
10 months ago
0.0.10
10 months ago
0.0.9
10 months ago
0.0.8
10 months ago
0.0.7
10 months ago
0.0.6
10 months ago
0.0.5
10 months ago
0.0.4
10 months ago
0.0.3
10 months ago
0.0.2
10 months ago