Zealy စာရွက်စာတမ်းများ

အလိုအလျောက် ဘာသာပြန်ထားသည် · အင်္ဂလိပ်လို ဖတ်ရန်

API

ပြင်ပ ပလက်ဖောင်းများတွင် လုပ်ဆောင်ချက်များကို အလိုအလျောက် လုပ်ဆောင်ပါ

ရေးသားသူ Fredrika

API
ဤစာမျက်နှာတွင်

ခြုံငုံသုံးသပ်ချက်

ဤလမ်းညွှန်ချက်သည် API တာဝန်အကြောင်း ဖြစ်ပါသည်။ ကျွန်ုပ်တို့၏ API စာရွက်စာတမ်း အပြည့်အစုံကို ဤနေရာတွင် ရှာတွေ့နိုင်ပါသည် ဤနေရာတွင်.

API တာဝန်များကို ပြင်ပ ပလက်ဖောင်းများရှိ တာဝန်များကို အလိုအလျောက် လုပ်ဆောင်ရန် အသုံးပြုပါသည်။ အသုံးပြုသူ မှတ်ပုံတင်ထားခြင်း သို့မဟုတ် ဝယ်ယူမှု ပြုလုပ်ထားခြင်း၊ Github ရှိ ပြဿနာတစ်ခုအတွက် PR ဖွင့်ထားခြင်း သို့မဟုတ် Reddit ပံ့ပိုးမှု ထည့်သွင်းထားခြင်းတို့ကို အတည်ပြုရန် ၎င်းကို အသုံးပြုနိုင်ပါသည်။ ဖြစ်နိုင်ခြေများမှာ အကန့်အသတ်မရှိပါ။ စတင်ရန်နှင့် လုပ်ဆောင်နိုင်စွမ်းကို စမ်းသပ်ရန် အခြား Zealy အသိုင်းအဝိုင်းများနှင့် ပူးပေါင်းဆောင်ရွက်မှုများ ပြုလုပ်ရန် အသုံးပြုနိုင်သည့် အခြေခံ endpoint တစ်ခုကို ကျွန်ုပ်တို့ ပံ့ပိုးပေးပါသည်။ ၎င်းကို မည်သို့ စနစ်ထည့်သွင်းရမည်ကို အောက်တွင် ပိုမိုလေ့လာပါ။

အခြေခံအချက်များ

"API" တာဝန်တစ်ခု ဖန်တီးခြင်း

  1. နှိပ်ပါ 'လုပ်ငန်းတာဝန် ထည့်ရန်'.
  2. ရွေးချယ်ပါ 'Api'.
  3. ခေါ်ဆိုရန် endpoint နှင့် လိုအပ်ပါက API key ကို သတ်မှတ်ပါ။
  4. အသုံးပြုသူများ မည်သို့ ဖော်ထုတ်နိုင်သည်ကို ရွေးချယ်ပါ။ အောက်ပါတို့မှ ရွေးချယ်နိုင်သည် အီးမေးလ်, Twitter, Discord, ပိုက်ဆံအိတ်လိပ်စာ၊ သို့မဟုတ် Zealy Connect.
  • ရွေးချယ်ပါက ပိုက်ဆံအိတ်ချိတ်ဆက်မှု၊ အသုံးပြုမည့်ကွန်ရက်ကိုလည်း ရွေးချယ်နိုင်သည်။

ဘလော့ခ်ချိန်းအသစ်များ

  • ရွေးချယ်ပါက Zealy Connectဤအဆင့်များကို လိုက်နာပါ-

    1. Redirect URL ကို သတ်မှတ်ပါ- ဤ URL ကို authentication အတွက် အသုံးပြုမည်ဖြစ်သည်။ သင့်စနစ်တွင် authenticate လုပ်ရန် အသုံးပြုသူများကို ဤ URL သို့ ကျွန်ုပ်တို့ redirect လုပ်မည်ဖြစ်သည်။

    Zealy Connect API TASK

    1. Community secret တစ်ခု ဖန်တီးပါ- Community secret တစ်ခု ဖန်တီးရန် လိုအပ်သည် Zealy Connect အလုပ်လုပ်ရန်။ သင်သည် လျှို့ဝှက်ချက်ကို ဤနေရာမှ ဖန်တီးနိုင်သည် Zealy Connect ဆက်တင်များ အောက်တွင် ပေါင်းစပ်မှုများ ကဏ္ဍ သင့်အသိုင်းအဝိုင်း ဆက်တင်များတွင်။

    အသိုင်းအဝိုင်း လျှို့ဝှက်ချက်

API များ မည်သို့အလုပ်လုပ်ရန် မျှော်လင့်ထားသည်ကို အသေးစိတ် သိရှိရန် ကြည့်ပါ API စာတမ်းများ နှင့် Zealy Connect ကို စီမံခန့်ခွဲခြင်းအတွက် လမ်းညွှန်ချက်အတွက် ကျေးဇူးပြု၍ ကြည့်ပါ Zealy Connect စာတမ်းများ.

Domino နှင့် ပေါင်းစပ်ခြင်း

Domino သည် Web3 Zapier ဖြစ်သည်။ ၎င်းသည် Zealy ၏ စွမ်းရည်များကို တိုးချဲ့ခွင့်ပြုပြီး မူလအတိုင်း ပံ့ပိုးမထားသော လုပ်ငန်းများကို အလိုအလျောက် ပြန်လည်သုံးသပ်နိုင်သည်၊ ဥပမာ-

  • အသုံးပြုသူ၏ Twitter အမည် သို့မဟုတ် ကိုယ်ရေးအချက်အလက်တွင် သတ်မှတ်ထားသော စကားလုံး ပါဝင်ခြင်း ရှိ/မရှိ စစ်ဆေးခြင်း
  • အသုံးပြုသူ၏ NFT နှင့် တိုကင် လက်ကျန်ကို စစ်ဆေးခြင်း
  • အသုံးပြုသူသည် Discord တွင် သတ်မှတ်ထားသော လူအရေအတွက်ကို ဖိတ်ကြားခဲ့ကြောင်း အတည်ပြုခြင်း
  • နှင့် အခြားများစွာ

သူတို့၏ စာတမ်းများ ကို ပေါင်းစည်းမှုအတွက် ကြည့်ပါ။

Endpoint စမ်းသပ်ခြင်း

Endpoint ကို ပြင်ဆင်သတ်မှတ်သောအခါ endpoint မှန်ကန်စွာ အလုပ်လုပ်ကြောင်း သေချာစေရန် အောက်ပါစမ်းသပ်မှုများကို အလိုအလျောက် လုပ်ဆောင်ပါမည်-

  1. ခေါ်ဆိုမှုသည် 10 စက္ကန့်ထက် မကြာကြောင်း စစ်ဆေးခြင်း
  2. အသုံးပြုသူထံ ပြသနိုင်ရန် အမှားအယွင်း မက်ဆေ့ချ်သည် မှန်ကန်သော ပုံစံဖြစ်ကြောင်း အတည်ပြုခြင်း
  3. မမျှော်လင့်ထားသော status code များ မဖြစ်ကြောင်း သေချာစေရန်။ endpoint သည် 200 သို့မဟုတ် 400 သာ ပြန်ပေးသင့်သည်။

စိတ်ကြိုက် endpoint တစ်ခု ဖန်တီးခြင်း

တောင်းဆိုမှု

API task များကို စိတ်ကြိုက် POST ဖြင့် အသုံးပြုနိုင်ပြီး အောက်ပါ body ကို လက်ခံသည်။

POST https://domain.com/endpoint
{
  /**
   * The user id on Zealy
   */
  userId: string;
  /**
   * Your community id on Zealy, if you use the endpoint
   * on multiple communities this might be useful
   */
  communityId: string;
  /**
   * Your community's subdomain on Zealy, if you use the endpoint
   * on multiple communities this might be useful
   */
  subdomain: string;
  /**
   * The id of the quest
   */
  questId: string;
  /**
   * This will be generated on every claim as a way to look up an error.
   * It will also be displayed for the user when a claim fails.
   */
  requestId: string;
  /**
   * Accounts will be sent if at least one identification method has been configured
   */
  accounts?: {
    /**
     * The user's email address
     */
    email?: string;
    /**
     * The user's Ethereum wallet address that he has authenticated with
     */
    wallet?: string;
    /**
     * The user's Discord id and handle
     */
    discord?: {
      id: string;
      handle: string;
    };
    /**
     * The user's Twitter id and username
     */
    twitter?: {
      id: string;
      username: string;
    };
    /**
     * Your platform user ID stored as part of the Zealy Connect integration
    */
    zealy-connect: string
  };
}

task ဖန်တီးစဉ် သတ်မှတ်ထားသော API key ဖြင့် ၎င်းကို ကာကွယ်နိုင်သည်။ API key ကို header များတွင် ဤသို့ ပေးပို့မည်။

Headers
{
  "X-Api-Key": apiKey,
}

တုံ့ပြန်မှု

အသုံးပြုသူက လုပ်ဆောင်ချက်ကို အောင်မြင်စွာ လုပ်ဆောင်ပြီးပါက သင်သည် 200 ထို့နောက် အသုံးပြုသူသည် တာဝန်ကို အောင်မြင်စွာ တောင်းခံနိုင်မည်ဖြစ်သည်။

RESPONSE 200
{
  "message": "User completed the action"
}

မဟုတ်ပါက၊ 400 အခြေအနေကို တုံ့ပြန်မှုတွင် ကိုယ်ထည်ရှိ မက်ဆေ့ချ်နှင့်အတူ ပြန်ပေးသင့်သည်။ မက်ဆေ့ချ်ကို ဖန်တီးထားသော requestId ဖြင့် ပြသမည်ဖြစ်ပြီး သင့်နှင့် အသုံးပြုသူအတွက် ပြဿနာများကို အမှားရှာဖွေရာတွင် အထောက်အကူဖြစ်စေရန် ဖြစ်သည်။ တတ်နိုင်သမျှ ဖော်ပြချက်ပြည့်စုံအောင် သေချာစေပါ။

RESPONSE 400
{
  "message": "We could not find a user with email kenny@zealy.io"
}

ကုဒ် ဥပမာ

// server.js
//
// Use this sample code to handle quest verification in your endpoint.
//
// 1) Paste this code into a new file (server.js)
//
// 2) Install dependencies
//   npm install express
//
// 3) Run the server on http://localhost:3000
//   node server.js
 
const express = require('express');
const app = express();
 
const apiKey = '5888a6800dbac634e52d8504f097e064'; // Replace with your API key configured in Zealy task
 
app.post('/claim', express.raw({ type: 'application/json' }), (req, res) => {
  const payload = req.body;
  const headers = req.headers
 
  if (apiKey !== headers['x-api-key']) {
    throw new Error('Invalid API Key')
  }
 
 
  const success = true; // Replace with custom logic
 
  if (!success) {
    return res.status(400).send({
      message: 'Validation failed' // Replace with custom error message - will be displayed to the user
    })
  }
 
  return res.status(200).send({
    message: "Quest completed"
  })
});
 
app.listen(3000, () => console.log('Running on port 3000'));

ngrok ဖြင့် ဒေသတွင်း စမ်းသပ်ခြင်း

သင့် စိတ်ကြိုက် endpoint ကို ဒေသတွင်းတွင် ဖန်တီးပြီး စမ်းသပ်သည့်အခါ Zealy မှ API တောင်းဆိုမှုများ ပေးပို့နိုင်ရန် သင့်ဒေသတွင်း ဆာဗာကို အင်တာနက်သို့ ဖော်ထုတ်နိုင်သည့် နည်းလမ်းတစ်ခု လိုအပ်ပါသည်။ ngrok သည် localhost သို့ လုံခြုံသော လိုဏ်ခေါင်းများ ဖန်တီးပေးသည့် ကိရိယာဖြစ်ပြီး ဤရည်ရွယ်ချက်အတွက် အထူးသင့်လျော်ပါသည်။ ngrok ကို စနစ်ထည့်သွင်းပြီး သင့် endpoint ကို စမ်းသပ်ရန် ဤအဆင့်များကို လိုက်နာပါ။

အဆင့် 1- ngrok ကို ထည့်သွင်းပါ ngrok ၏ ဝဘ်ဆိုက်မှ ngrok ကို ဒေါင်းလုဒ်လုပ်ပါ။ သင့် လည်ပတ်မှုစနစ်အတွက် ထည့်သွင်းမှု လမ်းညွှန်ချက်များကို လိုက်နာပါ။

အဆင့် 2: ngrok ကို စနစ်ထည့်သွင်းပါ အခမဲ့ ngrok အကောင့်တစ်ခု ဖွင့်ပြီး ngrok ဒက်ရှ်ဘုတ်မှ သင့် authtoken ကို ရယူပါ။ သင့် terminal တွင် ngrok authtoken YOUR_AUTH_TOKEN ကို run ခြင်းဖြင့် သင့် ngrok အကောင့်ကို ချိတ်ဆက်ပါ၊ YOUR_AUTH_TOKEN နေရာတွင် သင့် ngrok ဒက်ရှ်ဘုတ်မှ token ကို အစားထိုးပါ။

အဆင့် 3: သင့် local server ကို စတင်ပါ endpoint ကို host လုပ်ထားသော သင့် local server သည် run နေကြောင်း သေချာပါစေ။ ဥပမာ၊ သင့် server သည် Node.js app ဖြစ်ပါက node server.js ကို run နိုင်သည်။

အဆင့် 4: ngrok ဖြင့် သင့် local server ကို ဖော်ထုတ်ပါ terminal window အသစ်တစ်ခု ဖွင့်ပြီး သင့် local server ၏ port (ဥပမာ 3000) သို့ ngrok tunnel တစ်ခု စတင်ပါ၊ ၎င်းကို အသုံးပြု၍ ngrok http http://127.0.0.1:3000. ngrok သည် terminal တွင် forwarding URL တစ်ခုကို ပြသမည် (ဥပမာ၊ https://abc123.ngrok.io)။ ၎င်းသည် Zealy မှ သင့် local server သို့ ရောက်ရှိရန် အသုံးပြုမည့် public URL ဖြစ်သည်။

အဆင့် 5: Zealy တွင် သင့် API task ကို ပြင်ဆင်ပါ Zealy တွင် သင့် API task ကို စနစ်ထည့်သွင်းစဉ် ngrok forwarding URL ကို endpoint URL အဖြစ် အသုံးပြုပါ။ လိုအပ်သော path ကို ထည့်သွင်းရန် သေချာပါစေ၊ ဥပမာ၊ https://abc123.ngrok.io/claim.

မှတ်ချက်- ngrok URL များသည် ယာယီဖြစ်ပြီး ngrok ကို ပြန်လည်စတင်တိုင်း ပြောင်းလဲသွားမည်ဖြစ်ကြောင်း သတိရပါ။ စိတ်ကြိုက် subdomain များကို ပံ့ပိုးပေးသော အခကြေးငွေပေးရသည့် စာရင်းသွင်းမှု မရှိပါက ထိုသို့ဖြစ်သည်။ ngrok ကို ပြန်လည်စတင်တိုင်း Zealy ရှိ endpoint ကို အပ်ဒိတ်လုပ်ရန် သေချာပါစေ။

ဤအဆင့်များကို လိုက်နာခြင်းဖြင့် ထုတ်လုပ်မှုဆာဗာသို့ မဖြန့်ကျက်မီ သင့်စိတ်ကြိုက် endpoint ကို ဒေသတွင်း ဖွံ့ဖြိုးရေးပတ်ဝန်းကျင်တွင် အလွယ်တကူ စမ်းသပ်ပြီး အမှားရှာဖွေနိုင်ပါသည်။

Zealy Connect ပေါင်းစည်းမှု

Zealy Connect ကို အသုံးပြုသောအခါ အလုပ်တာဝန် စနစ်ထည့်သွင်းစဉ် သတ်မှတ်ထားသော URL သို့ အသုံးပြုသူကို ကျွန်ုပ်တို့ ပြန်လည်ညွှန်းပေးမည်ဖြစ်သည်။ အောက်ပါ query params များကို ထည့်သွင်းပေးမည်ဖြစ်သည်-

  • zealyUserId- Zealy စနစ်ရှိ အသုံးပြုသူအတွက် သင့်ပလက်ဖောင်းနှင့် ချိတ်ဆက်ရန် အသုံးပြုသော သီးသန့်အမှတ်အသား။
  • callback- စစ်မှန်ကြောင်း အတည်ပြုမှု ပြီးစီးပြီးနောက် အလုပ်တာဝန်ကို တောင်းခံနိုင်ရန် အသုံးပြုသူကို ပြန်လည်ညွှန်းပေးမည့် URL။
  • signature- တောင်းဆိုမှု၏ စစ်မှန်ကြောင်း အတည်ပြုရန် အသုံးပြုသော SHA-256 hash ဖြစ်ပြီး ၎င်းသည် Zealy မှ စတင်ခဲ့ကြောင်း သေချာစေသည်။

စတင်ရန် အခြေခံအဖြစ် အသုံးပြုနိုင်သော ဥပမာ endpoint အပြည့်အစုံမှာ ဤသို့ဖြစ်သည်-

 
const YOUR_COMMUNITY_SECRET = "fdb68b155a1ccf2e636c7cd7e0816530"; // Replace with your secret generated in Settings > Integrations > Zealy Connect
 
app.get("/connect", (req, res) => {
  // Extract the query parameters
  const { zealyUserId, signature, callbackUrl } = req.query;
 
  /**
   * Verifying signature to ensure the request is coming from Zealy
   */
  const fullUrl = new URL(
    `${req.protocol}://${req.get("host")}${req.originalUrl}`
  );
  fullUrl.searchParams.delete("signature");
 
  const hmac = crypto.createHmac("sha256", YOUR_COMMUNITY_SECRET);
  hmac.update(fullUrl.toString());
  const generatedSignature = hmac.digest("hex");
 
  if (generatedSignature !== signature){
    return res.status(400).send("Invalid signature");
  }
 
  /**
   * Redirect to login if the user is not authenticated
   */
  if (!req.session.user) {
    res.redirect(`/login?redirect=${encodeURIComponent(req.originalUrl)}`); // Redirect back after the user logs in
  }
 
  /**
   * Save the Zealy User ID (optional)
  */
  // await updateUser(req.session.user.id, { zealyId: zealyUserId });
 
 
  /**
   * Redirect Back to Zealy
   */
  const userId = req.session.user.id; // Replace with your platform user ID
 
  const callbackWithParams = new URL(callbackUrl as string);
  callbackWithParams.searchParams.append("identifier", userId);
 
  const hmac = crypto.createHmac("sha256", YOUR_COMMUNITY_SECRET);
  hmac.update(callbackWithParams.toString());
  const callbackSignature = hmac.digest("hex");
 
  callbackWithParams.searchParams.append("signature", callbackSignature);
 
  res.redirect(callbackWithParams.toString());
});

1. လက်မှတ်ကို အတည်ပြုပါ

သင့်အပလီကေးရှင်း ပထမဆုံး လုပ်ဆောင်သင့်သည်မှာ သင့်ကွန်မြူနတီ လျှို့ဝှက်ချက်ကို အသုံးပြု၍ လက်မှတ်ကို အတည်ပြုစစ်ဆေးခြင်း ဖြစ်သည်။ ဤစစ်ဆေးမှုက ခေါ်ဆိုမှုသည် ကျွန်ုပ်တို့ထံမှ အမှန်တကယ် လာရောက်ခြင်းဖြစ်ပြီး ပြုပြင်ပြောင်းလဲထားခြင်း မရှိကြောင်း သေချာစေသည်။

ကျွန်ုပ်တို့သည် လက်မှတ်ကို ထုတ်လုပ်ရန် SHA256 hash algorithm ကို အသုံးပြုပါသည်။ ၎င်းကို အတည်ပြုရန် အောက်ပါနည်းလမ်းကို အသုံးပြုနိုင်ပါသည်။

const fullUrl = new URL(
  `${req.protocol}://${req.get("host")}${req.originalUrl}`
);
fullUrl.searchParams.delete("signature");
 
const hmac = crypto.createHmac("sha256", YOUR_COMMUNITY_SECRET);
hmac.update(fullUrl.toString());
const generatedSignature = hmac.digest("hex");
 
const isSignatureValid = generatedSignature === req.query.signature;

2. Zealy User ID ကို အသုံးပြုပါ

နောက်ထပ်အဆင့်သည် သင်လုပ်ဆောင်လိုသည့်အရာပေါ်တွင် မူတည်သော်လည်း ဖောက်သည်များသည် များသောအားဖြင့် သင့်ပလက်ဖောင်းတွင် လက်ရှိအသုံးပြုသူကို လော့ဂ်အင်ဝင်ပြီး သင့်ပလက်ဖောင်း၏ user ID ကို Zealy User ID နှင့် ချိတ်ဆက်ကြပါသည်။ အောက်တွင် ဥပမာတစ်ခု ဖော်ပြထားပါသည်။

  /**
   * Redirect to login if the user is not authenticated
   */
  if (!req.session.user) {
    res.redirect(`/login?redirect=${encodeURIComponent(req.originalUrl)}`); // Redirect back after the user logs in
  }
 
  /**
   * Save the Zealy User ID (optional)
  */
  // await updateUser(req.session.user.id, { zealyId: zealyUserId });
 

3. Zealy သို့ ပြန်လည်လမ်းညွှန်ပါ

နောက်ဆုံးအဆင့်မှာ ကျွန်ုပ်တို့ပေးထားသော callback query parameter ကို အသုံးပြု၍ အသုံးပြုသူအား task ကို claim လုပ်ခွင့်ပြုရန်အတွက် သင့်ပလက်ဖောင်း၏ user ID ဖြင့် Zealy သို့ ပြန်လည်လမ်းညွှန်ခြင်း ဖြစ်ပါသည်။ ထို့အပြင် ခေါ်ဆိုမှုသည် သင့်ထံမှ ဖြစ်ကြောင်းနှင့် ပြင်ဆင်ထားခြင်း မရှိကြောင်း ကျွန်ုပ်တို့ အတည်ပြုနိုင်ရန် လက်မှတ်တစ်ခုကိုလည်း ထုတ်လုပ်ရန် လိုအပ်ပါသည်။ အောက်တွင် ဥပမာကို ကြည့်ပါ။

const callbackWithParams = new URL(callbackUrl as string);
callbackWithParams.searchParams.append("identifier", connectedUserId); // Set it to your platform user ID
 
const hmac = crypto.createHmac("sha256", YOUR_COMMUNITY_SECRET);
hmac.update(callbackWithParams.toString());
const callbackSignature = hmac.digest("hex");
 
callbackWithParams.searchParams.append("signature", callbackSignature);
 
res.redirect(callbackWithParams.toString());

4. Zealy

callback ကို ကျွန်ုပ်တို့ လက်ခံရရှိပြီးပါက လက်မှတ်ကို အတည်ပြုပြီး သင့်ပလက်ဖောင်း၏ user ID ကို သိမ်းဆည်းမည်ဖြစ်ရာ API task body ၏ တစ်စိတ်တစ်ပိုင်းအဖြစ် ပေးပို့နိုင်မည် ဖြစ်ပါသည်။

ယခု အသုံးပြုသူသည် ထို task နှင့် တူညီသော redirect URL ဖြင့် Zealy Connect ကို အသုံးပြုသည့် အခြားမည်သည့် task ကိုမဆို claim လုပ်နိုင်မည် ဖြစ်ပါသည်။ task တစ်ခုစီအတွက် အသုံးပြုသူ ချိတ်ဆက်ရန် မလိုအပ်စေရန် ကျွန်ုပ်တို့ မှတ်သားထားမည် ဖြစ်ပါသည်။

အသုံးပြုသူ၏ Zealy Connect ချိတ်ဆက်မှုကို ဖျက်ရန် လိုအပ်ပါက သင်အသုံးပြုနိုင်သည် အဖွဲ့ဝင်အတွက် Zealy Connect ဖျက်ရန် API လမ်းကြောင်း။ ဤလမ်းကြောင်းသည် သီးခြားအဖွဲ့ဝင်တစ်ဦးအတွက် Zealy Connect ချိတ်ဆက်မှုကို ဖယ်ရှားနိုင်စေပါသည်။ ဤလမ်းကြောင်းကို ခေါ်ယူပြီးနောက် အသုံးပြုသူသည် Zealy Connect လုပ်ဆောင်ချက်များကို ထပ်မံအသုံးပြုရန် ၎င်းတို့၏အကောင့်ကို ပြန်လည်ချိတ်ဆက်ရန် လိုအပ်ပါမည်။

မေးလေ့ရှိသောမေးခွန်းများ