Anti-Sybil SDK - A rapid and privacy-preserving solution to combat bot and sybil attacks by using the RedirectURL as the src-attribute value for the iFrame.
Use Case
When you need to protect a website or application from automated attacks, you can use anti-bot mechanisms. These attacks can result in malicious behavior, such as spamming, data theft, or network disruption. Anti-bot technology is designed to identify and block these attacks to ensure that only real human users can access your website or application.
In this case, users are required to undergo facial liveliness detection to prove that they are real human users. This detection requires users to perform specific actions or expressions in front of a camera to prove that they are genuine humans and not automated programs. This technology can help prevent automated attacks and fraud, and increase the security and reliability of your website or application.
zkMe-Widget MeID Process
Step 1: Enter the service authorization Widget page, the user confirms and goes to the next step
Step 4: Based on the outcomes of the initiated query, a determination is made regarding whether to commence the authentication process for the specified user.
Interaction Instructions
Integration via NPM
You can refer to @zkmelabs/widget and please make sure to use the latest version.
import { ZkMeWidget,type Provider } from'@zkmelabs/widget'constprovider:Provider= {asyncgetAccessToken() {// -------------------------TODO-------------------------// Request a new token from your backend service and return it to the widget. // For the access token, see docs.zk.me/zkme-dochub/meid-anti-bot-suite/meid-integration-guide/sdk-integration#how-to-generate-an-access-token-with-api_key
// ------------------------------------------------------returnfetchNewToken() },asyncgetUserAccounts() {// -------------------------TODO-------------------------// If your project is a Dapp,// you need to return the user's connected wallet address.constuserConnectedAddress=awaitconnect()return [userConnectedAddress]// If not,// you should return the user's e-mail address, phone number or any other unique identifier.//// return ['email address']// or// return ['phone number']// or// return ['unique identifier']// ------------------------------------------------------ },}constzkMeWidget=newZkMeWidget(// -------------------------TODO------------------------- appId,// This parameter means the same thing as "mchNo"'YourDappName', chainId, provider, { lv:'MeID'// For other options, please refer to the table below }// ------------------------------------------------------)
import { ZkMeWidget,type Provider } from'@zkmelabs/widget'constprovider:Provider= {asyncgetAccessToken() {// -------------------------TODO-------------------------// Request a new token from your backend service and return it to the widget. // For the access token, see docs.zk.me/zkme-dochub/meid-anti-bot-suite/meid-integration-guide/sdk-integration#how-to-generate-an-access-token-with-api_key
// ------------------------------------------------------returnfetchNewToken() },asyncgetUserAccounts() {// If your project is a Dapp,// you need to return the user's connected wallet address.constuserConnectedAddress=awaitconnect()return [userConnectedAddress] },}constzkMeWidget=newZkMeWidget(// -------------------------TODO------------------------- appId,// This parameter means the same thing as "mchNo"'YourDappName', chainId, provider, { lv:'MeID', mode:'wallet',// Whether to verify the validity of the user's wallet. Default is false. // If set to true, you need to implement the provider.signMessage method. checkAddress:true// For other options, please refer to the table below }// ------------------------------------------------------)
NOTE: The specific configuration for the "option" parameter is shown in the table below
Param
Type
Description
options.theme
Theme?
"auto", "light" or "dark", default "auto". This option must match the 'Set your color mode' settings in the Dashboard. For widget UI customization, please refer to: Customize Widget UI.
Step 3. Listen to the meidFinished widget events to detect when the user has completed the MeID process
asyncfunctionhandleFinished(results) {const { isGrant,associatedAccount } = resultsif ( isGrant && associatedAccount ===userConnectedAddress.toLowerCase() ) {// Prompts the user that MeID verification has been completed }}zkMeWidget.on('meidFinished', handleFinished)
Step 4. Launch the zkMe widget and it will be displayed in the center of your webpage
// This is the code to launch our widget on your pagebutton.addEventListener('click', () => {zkMeWidget.launch()})
Helper functions
verifyMeidWithZkMeServices()
Before launching the widget, you should check the MeID status of the user and launch the widget when the check result is false.