0.3.0 • Published 7 months ago
@authsignal/react v0.3.0
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.3.0
7 months ago
0.2.2
11 months ago
0.2.1
12 months ago
0.2.0
12 months ago
0.1.1
12 months ago
0.1.0
1 year ago
0.0.15
1 year ago
0.0.14
1 year ago
0.0.13
1 year ago
0.0.12
1 year ago
0.0.11
1 year ago
0.0.10
1 year ago
0.0.9
1 year ago
0.0.8
1 year ago
0.0.7
1 year ago
0.0.6
1 year ago
0.0.5
1 year ago
0.0.4
1 year ago
0.0.3
1 year ago
0.0.2
1 year ago