API
በውጫዊ መድረኮች ላይ እርምጃዎችን በራስ-ሰር ያከናውኑ
በ Fredrika

በዚህ ገጽ ላይ
አጠቃላይ እይታ
ይህ መመሪያ ስለ API ተግባር ነው። የተሟላ የAPI ሰነዳችንን ማግኘት ይችላሉ እዚህ.
የAPI ተግባራት በውጫዊ መድረኮች ላይ ተግባራትን በራስ-ሰር ለማከናወን ያገለግላሉ። ተጠቃሚው መመዝገቡን ወይም ግዢ ማድረጉን ለማረጋገጥ፣ በGithub ላይ ለአንድ ጉዳይ PR መክፈቱን ወይም ለReddit ድጋፍ ለመጨመር ሊጠቀሙበት ይችላሉ። አማራጮቹ ማለቂያ የላቸውም። ለመጀመር እና የምናቀርበውን ተግባር ለመሞከር ከሌሎች የZealy ማህበረሰቦች ጋር አጋርነት ለመፍጠር ሊጠቀሙበት የሚችሉትን መሰረታዊ የመጨረሻ ነጥብ እናቀርባለን። እንዴት እንደሚያዘጋጁት ከዚህ በታች ይማሩ።
መሰረታዊ ነገሮች
"API" ተግባር መፍጠር
- ጠቅ ያድርጉበት 'ተግባር አክል'.
- ይምረጡ 'Api'.
- የሚጠራውን የመጨረሻ ነጥብ እና ካስፈለገ የAPI ቁልፍ ይግለጹ።
- ተጠቃሚዎች እንዴት እንዲለዩ ይምረጡ። ከሚከተሉት መምረጥ ይችላሉ ኢሜይል, Twitter, Discord, የኪስ አድራሻ፣ ወይም Zealy Connect.
- ቢመርጡ የኪስ ግንኙነት፣ የትኛውን ኔትወርክ መጠቀም እንደሚፈልጉም መምረጥ ይችላሉ።

-
ከመረጡ Zealy Connect፣ እነዚህን ደረጃዎች ይከተሉ፦
- የማዞሪያ ዩአርኤል ይግለጹ፦ ይህ ዩአርኤል ለማረጋገጫ ይጠቀማል። ተጠቃሚዎች በእርስዎ ስርዓት ውስጥ እንዲረጋገጡ ወደዚህ ዩአርኤል እናዞራቸዋለን።

- የማህበረሰብ ምስጢር ይፍጠሩ፦ የማህበረሰብ ምስጢር መፍጠር ለዚህ ያስፈልጋል Zealy Connect እንዲሰራ። ሚስጥሩን ከ የZealy Connect ቅንብሮች በ የIntegrations ክፍል በማህበረሰብዎ ቅንብሮች ውስጥ።

APIs እንዴት እንደሚሰሩ ለማወቅ ጥልቅ መረጃ ለማግኘት እባክዎ ይመልከቱ የAPI ሰነድ እና ለZealy Connect አስተዳደር መመሪያ እባክዎ ይመልከቱ የZealy Connect ሰነድ.
ከDomino ጋር ውህደት
Domino የWeb3 Zapier ነው። የZealy አቅሞችን እንዲያራዝሙ እና በተፈጥሮ የማይደገፉ ተግባራትን በራስ-ሰር እንዲገመግሙ ያስችልዎታል፣ ለምሳሌ፦
- የተጠቃሚው የTwitter ስም ወይም መግለጫ የተወሰነ ቃል መያዙን መፈተሽ
- የተጠቃሚውን NFT እና ቶከን ቀሪ ሂሳብ መፈተሽ
- አንድ ተጠቃሚ በDiscord ላይ የተወሰነ ቁጥር ያላቸውን ሰዎች መጋበዙን ማረጋገጥ
- እና ሌሎች ብዙ
ይመልከቱ ሰነዳቸውን ለውህደት።
የመጨረሻ ነጥብ ምርመራ
የመጨረሻ ነጥቡን በምናዋቅርበት ጊዜ የመጨረሻ ነጥቡ እንደተጠበቀው እየሰራ መሆኑን ለማረጋገጥ የሚከተሉትን ምርመራዎች በራስ-ሰር እናካሂዳለን፦
- ጥሪው ከ10 ሰከንድ በላይ እንዳይወስድ በመፈተሽ
- የስህተቱ መልእክት ለተጠቃሚው ማሳየት እንድንችል ትክክለኛው ቅርጸት መሆኑን በማረጋገጥ
- ያልተጠበቁ የሁኔታ ኮዶች አለመሆኑን ማረጋገጥ። መጨረሻ ነጥቡ 200 ወይም 400 ብቻ መመለስ አለበት።
ብጁ መጨረሻ ነጥብ መፍጠር
ጥያቄ
የAPI ተግባሮችን ከብጁ POST መጨረሻ ነጥብ ጋር መጠቀም ይችላሉ፣ ይህም የሚከተለውን አካል ይቀበላል፦
{
/**
* 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
};
}ተግባሩ ሲፈጠር በሚዘጋጅ የAPI ቁልፍ ሊጠብቁት ይችላሉ። የAPI ቁልፉ በራስጌዎች ውስጥ እንደዚህ ይላካል፦
{
"X-Api-Key": apiKey,
}ምላሽ
ተግባሩ በተጠቃሚው በተሳካ ሁኔታ ከተከናወነ 200 ሁኔታ። ተጠቃሚው ከዚያ ተግባሩን በተሳካ ሁኔታ ይጠይቃል።
{
"message": "User completed the action"
}አለበለዚያ፣ 400 ሁኔታ ከሰውነት ውስጥ ካለው መልእክት ጋር በምላሹ ውስጥ መመለስ አለበት። መልእክቱ ከተፈጠረው ጋር ይታያል requestId እርስዎን እና ተጠቃሚውን ማንኛውንም ችግሮች ለማረም ለመርዳት። በተቻለ መጠን ገላጭ መሆኑን ያረጋግጡ።
{
"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 አካባቢያዊ ሙከራ
ብጁ የመጨረሻ ነጥብዎን በአካባቢው ሲያዘጋጁ እና ሲፈትኑ፣ Zealy የAPI ጥያቄዎችን ሊልክበት እንዲችል የአካባቢ አገልጋይዎን ለኢንተርኔት የሚያጋልጥ መንገድ ያስፈልግዎታል። ngrok ወደ localhost አስተማማኝ ዋሻዎችን የሚፈጥር መሣሪያ ሲሆን ለዚህ ዓላማ ፍጹም ነው። ngrok ለማዘጋጀት እና የመጨረሻ ነጥብዎን ለመፈተን እነዚህን ደረጃዎች ይከተሉ፦
ደረጃ 1፦ ngrok ይጫኑ ngrokን ከngrok ድረ-ገጽ ያውርዱ። ለስርዓተ ክወናዎ የመጫኛ መመሪያዎችን ይከተሉ።
ደረጃ 2፦ ngrok ያዘጋጁ በነፃ የ ngrok መለያ ይመዝገቡ እና authtokenዎን ከ ngrok ዳሽቦርድ ያግኙ። በተርሚናልዎ ውስጥ ngrok authtoken YOUR_AUTH_TOKEN በማስኬድ የ ngrok መለያዎን ያገናኙ፤ YOUR_AUTH_TOKENን ከ ngrok ዳሽቦርድዎ በተገኘው ቶከን ይተኩ።
ደረጃ 3፦ የአካባቢ ሰርቨርዎን ያስጀምሩ ኤንድፖይንቱን የሚያስተናግደው የአካባቢ ሰርቨርዎ እየሰራ መሆኑን ያረጋግጡ። ለምሳሌ፣ ሰርቨርዎ የ Node.js መተግበሪያ ከሆነ node server.js ማስኬድ ይችላሉ።
ደረጃ 4፦ የአካባቢ ሰርቨርዎን በ ngrok ያጋልጡ
አዲስ የተርሚናል መስኮት ይክፈቱ እና ወደ የአካባቢ ሰርቨርዎ ፖርት (ለምሳሌ 3000) የ ngrok ቱነል ያስጀምሩ በመጠቀም ngrok http http://127.0.0.1:3000.
ngrok በተርሚናሉ ውስጥ የማስተላለፊያ URL ያሳያል (ለምሳሌ https://abc123.ngrok.io)። ይህ Zealy የአካባቢ ሰርቨርዎን ለመድረስ የሚጠቀምበት ይፋዊ URL ነው።
ደረጃ 5፦ የ API ተግባርዎን በ Zealy ያዋቅሩ በ Zealy የ API ተግባርዎን ሲያዘጋጁ የ ngrok ማስተላለፊያ URLን እንደ ኤንድፖይንት URL ይጠቀሙ። የሚያስፈልገውን ዱካ ማከልዎን ያረጋግጡ፣ ለምሳሌ https://abc123.ngrok.io/claim.
ማስታወሻ፦ አስታውሱ፣ የ ngrok አድራሻዎች ጊዜያዊ ናቸው እና ngrok በሚያስጀምሩ ቁጥር ይቀየራሉ፣ ልዩ ንዑስ ጎራዎችን የሚደግፍ የሚከፈልበት የደንበኝነት ምዝገባ ካለዎት በስተቀር። ngrok በሚያስጀምሩ ቁጥር በ Zealy ውስጥ ያለውን የመጨረሻ ነጥብ ማዘመንዎን ያረጋግጡ።
እነዚህን ደረጃዎች በመከተል ብጁ የመጨረሻ ነጥብዎን ወደ ምርት አገልጋይ ከማሰማራትዎ በፊት በአካባቢያዊ ልማት አካባቢ ውስጥ በቀላሉ መሞከር እና ማረም ይችላሉ።
የ Zealy Connect ውህደት
Zealy Connect ሲጠቀሙ፣ ተጠቃሚውን በተግባሩ ዝግጅት ወቅት ወደተገለጸው URL እናዞራለን። የሚከተሉትን የመጠይቅ መለኪያዎች እናካትታለን፦
zealyUserId፦ ተጠቃሚውን ከመድረክዎ ጋር ለማገናኘት የሚያገለግል በ Zealy ስርዓት ውስጥ ያለ ልዩ መለያ።callback፦ ማረጋገጫው ከተጠናቀቀ በኋላ ተጠቃሚው ተግባሩን እንዲጠይቅ ወደኋላ ለመመለስ የሚያገለግል URL።signature፦ የጥያቄውን ትክክለኛነት ለማረጋገጥ የሚያገለግል የ SHA-256 ሃሽ፣ ከ Zealy የመጣ መሆኑን ያረጋግጣል።
እንደ መነሻ ሊጠቀሙበት የሚችሉት ሙሉ የምሳሌ የመጨረሻ ነጥብ ይኸው፦
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 ሃሽ አልጎሪዝምን እንጠቀማለን። ለማረጋገጥ የሚከተለውን አቀራረብ መጠቀም ይችላሉ፦
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 የተጠቃሚ መለያ ይጠቀሙ
ቀጣዩ እርምጃ ምን ማድረግ እንደሚፈልጉ ይወሰናል፣ ነገር ግን ደንበኞች በተለምዶ የአሁኑን ተጠቃሚ በመድረክዎ ላይ ያስገባሉ እና የመድረክዎን የተጠቃሚ መለያ ከZealy የተጠቃሚ መለያ ጋር ያገናኛሉ። ከዚህ በታች ምሳሌ አለ፦
/**
* 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 መልሶ ይመላለሱ
የመጨረሻው እርምጃ ተጠቃሚው ተግባሩን እንዲጠይቅ ለማስቻል ተጠቃሚውን ከመድረክዎ የተጠቃሚ መለያ ጋር ወደ Zealy መልሶ ማስተላለፍ ነው፣ ይህም እኛ የምንሰጠውን የcallback መለኪያ በመጠቀም ነው። ጥሪው ከእርስዎ መሆኑን እና እንዳልተቀየረ ለማረጋገጥ ፊርማም ማመንጨት ይኖርብዎታል። ከዚህ በታች ያለውን ምሳሌ ይመልከቱ፦
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 ሲደርሰን ፊርማውን እናረጋግጣለን እና የመድረክዎን የተጠቃሚ መለያ እናስቀምጣለን፣ ይህም በAPI ተግባር አካል አድርገን እንድንልክ ነው።
ተጠቃሚው አሁን ተግባሩን እና ተመሳሳይ የማስተላለፊያ URL የሚጠቀሙ ሌሎች የZealy Connect ተግባራትን ማመልከት ይችላል። ተጠቃሚው ለእያንዳንዱ ተግባር መገናኘት እንዳያስፈልገው ይህን እናስታውሳለን።
የተጠቃሚውን የZealy Connect ትስስር መሰረዝ ካስፈለገዎት፣ ይህን መጠቀም ይችላሉ፦ የአባል የZealy Connect መሰረዣ API መንገድይህ መንገድ ለተወሰነ አባል የZealy Connect ትስስርን ለማስወገድ ያስችልዎታል። ይህን መንገድ ከጠራ በኋላ፣ ተጠቃሚው የZealy Connect ባህሪያትን እንደገና ለመጠቀም መለያውን እንደገና ማገናኘት ይኖርበታል።