Skip to main content

Start a QR code challenge

const { data } = await authsignal.qrCode.challenge({
  action: "kiosk-login",
  onStateChange: (state: ChallengeState, token?: string) => {
    if (state === "approved" && token) {
      // Validate the challenge on your backend
    }
  },
});

Parameters

action
string
required
The action being performed.
onStateChange
function
required
A function that is called when the challenge state changes.
onRefresh
function
A function that is called when the challenge should be refreshed.
custom
object
A JSON object which can include any key/value pairs. Can be used to provide additional context to the challenge which can be reviewed on the user’s mobile device.
refreshInterval
number
The interval in milliseconds at which the challenge should be refreshed. Defaults to 540000 (9 minutes). This should be set to a value lower than your token’s expiry time to allow a tolerance for the challenge to be completed.
polling
boolean
Whether to poll for the challenge result using RESTful API endpoints. Should only be used if you are unable to use WebSocket connections.Defaults to false and uses WebSockets.
pollInterval
number
The interval in milliseconds at which the challenge should be polled. Defaults to 5000 (5 seconds).Only relevant when polling is set to true.

Response

response
AuthsignalResponse<QrCodeChallengeResponse>

Refresh a QR code challenge

await authsignal.qrCode.refresh();
This can only be called after a QR code challenge has been initiated. The callback functions passed to the challenge method will be re-used.

Parameters

custom
object
A JSON object which can include any key/value pairs. Can be used to update context to the challenge which can be reviewed on the user’s mobile device.

Disconnect a QR code challenge

Call disconnect to tear down the active challenge. This closes the WebSocket connection (or stops polling) and clears any refresh timers. Call it when the QR code is no longer displayed, for example when the user navigates away.
authsignal.qrCode.disconnect();