SDK
Rasmiy JavaScript SDK kirish manzillarini va imzo havolalarini siz uchun tuzadi hamda Hivesigner API'sini chaqiradi. Python uchun jamoa kutubxonalari mavjud. Boshqa har qanday til REST API ga bevosita murojaat qilishi mumkin.
JavaScript SDK
SDK bu hivesigner nomli npm paketi. Uning manba kodi https://github.com/ecency/hivesigner-sdk manzilida. U TypeScript'da yozilgan va oʻz turlari bilan birga keladi.
4-versiya Node.js 18 yoki undan yangi versiyasini talab qiladi, chunki u ichki fetch funksiyasidan foydalanadi. Brauzerlarda unga ES2017 yoki undan yangi standart kerak. Global fetch yoʻq joyda SDK'dan foydalanishdan oldin polyfill qoʻshing. Eskiroq Node.js'da 3-versiyada qoling.
Oʻrnatish
npm install hivesigner
Yigʻish bosqichi yoʻq sahifa uchun brauzer bandlini yuklang. U hivesigner nomli global oʻzgaruvchini aniqlaydi:
<script src="https://cdn.jsdelivr.net/npm/hivesigner@4/lib/hivesigner.min.js"></script>
Mijoz yarating
import { Client } from 'hivesigner';
const client = new Client({
app: 'CLIENT_ID',
callbackURL: 'REDIRECT_URI',
scope: ['posting'],
});
| Parametr | Maʼnosi |
|---|---|
app |
Ilova hisobingiz, client_id sifatida yuboriladi. |
callbackURL |
Hivesigner foydalanuvchini qayerga qaytarishi. U ilovangizning callback manzillaridan biriga harfma-harf mos boʻlishi kerak (oddiy http loopback manzili xost va port boʻyicha farq qilishi mumkin, qarang: Callback manzillari). |
scope |
Roʻyxat; vergullar bilan birlashtirilib, scope parametriga qoʻyiladi. Qarang: Ruxsat doiralari. |
responseType |
Kod oqimi uchun 'code'. Token oqimida uni koʻrsatmang. |
accessToken |
Foydalanuvchining kirish tokeni, agar u sizda allaqachon boʻlsa. |
apiURL |
API manbai. SDK unga /api/ qoʻshadi. Standart qiymati https://hivesigner.com. |
setApp, setCallbackURL, setScope, setAccessToken, removeAccessToken va setApiURL mijozni keyinroq oʻzgartiradi. Ularning har biri mijozni qaytaradi.
Foydalanuvchini tizimga kiriting
getLoginURL(state, account) kirish manzilini qaytaradi:
const url = client.getLoginURL('STATE');
// https://hivesigner.com/oauth2/authorize?client_id=CLIENT_ID&redirect_uri=REDIRECT_URI&scope=posting&state=STATE
statecallback manzilingizga oʻzgarmasdan qaytadi. Undan javobni soʻrovga bogʻlash uchun foydalaning.accountixtiyoriy: foydalanuvchi nomi. Hivesigner bu hisob qurilmada boʻlsa uni tanlaydi, boʻlmasa eʼtiborsiz qoldiradi.
Brauzerda client.login({ state: 'STATE' }) foydalanuvchini xuddi shu manzilga, hisobsiz yuboradi.
Token oqimida callback manzilingiz access_token, expires_in va username qiymatlarini oladi. Tokenni mijozga bering:
client.setAccessToken('ACCESS_TOKEN');
SDK'da kod oqimidagi almashinuv uchun usul yoʻq. Serveringiz kod va mijoz maxfiy kalitini API'ga oʻzi yuboradi, buni Kodni almashtiring koʻrsatadi.
Foydalanuvchini oling
const me = await client.me();
// { user, _id, name, account, scope, user_metadata }
account bu blokcheyn qaytargan koʻrinishdagi foydalanuvchining Hive hisobi. scope token nimaga ruxsat berishini roʻyxatlaydi.
Tranzaksiya yuboring
broadcast(operations) amallarni API'ga yuboradi, API esa ularni foydalanuvchi nomidan tarmoqqa uzatadi. API faqat token foydalanuvchisi yozgan posting amallarini qabul qiladi: vote, comment, delete_comment, comment_options, posting vakolati bilan custom_json, claim_reward_balance va profil maʼlumotlari uchun account_update2. Qarang: broadcast nimani qabul qiladi.
await client.broadcast([
['vote', { voter: 'USERNAME', author: 'AUTHOR', permlink: 'PERMLINK', weight: 10000 }],
]);
Har bir amalda foydalanuvchini koʻrsating. API __signer ni almashtirmaydi.
Bu yordamchilar bittadan amal tuzadi va broadcast ni chaqiradi:
| Usul | Nimani yuboradi |
|---|---|
vote(voter, author, permlink, weight) |
vote. weight -10000 dan 10000 gacha (100%). |
comment(parentAuthor, parentPermlink, author, permlink, title, body, jsonMetadata) |
comment. Yangi post uchun parentAuthor bu ''. jsonMetadata obyekt boʻlishi mumkin: SDK uni satrga aylantiradi. |
deleteComment(author, permlink) |
delete_comment |
customJson(requiredAuths, requiredPostingAuths, id, json) |
custom_json. requiredAuths sifatida [], requiredPostingAuths sifatida ['USERNAME'] yuboring. json bu satr. |
reblog(account, author, permlink) |
Postni qayta ulashadigan, id qiymati follow boʻlgan custom_json |
follow(follower, following) |
id qiymati follow va what: ['blog'] boʻlgan custom_json |
unfollow(unfollower, unfollowing) |
id qiymati follow va what: [] boʻlgan custom_json |
ignore(follower, following) |
id qiymati follow va what: ['ignore'] boʻlgan custom_json (ovozini oʻchirish) |
claimRewardBalance(account, rewardHive, rewardHbd, rewardVests) |
claim_reward_balance. Summalar '0.000 HIVE', '0.000 HBD' va '1.000000 VESTS' kabi satrlar. |
updateUserMetadata() eskirgan. Foydalanuvchi profilini oʻzgartirish uchun yangi posting_json_metadata bilan account_update2 yuboring.
Tizimdan chiqing
revokeToken() bu SDK'ning chiqish chaqiruvi. U tokenni API'ning bekor qilish manziliga yuboradi va soʻngra uni mijozdan olib tashlaydi. Chaqiruv rad etilganda removeAccessToken() ni oʻzingiz chaqiring. Tokenni ilovangiz saqlagan joydan ham oʻchiring.
Ilovangiz ruxsatini butunlay tugatish uchun foydalanuvchi uni https://hivesigner.com/authorized-apps sahifasida olib tashlaydi. Qarang: Ilova ruxsatini koʻrish va olib tashlash.
Imzo havolalari
sendOperation(op, params), sendOperations(ops, params) va sendTransaction(tx, params) https://hivesigner.com/sign/... havolasini qaytaradi. params callback, no_broadcast va signer qiymatlarini oladi. Qarang: Imzo havolalari.
import { sendOperation } from 'hivesigner';
const link = sendOperation(
['transfer', { from: '__signer', to: 'RECIPIENT', amount: '1.000 HIVE', memo: 'MEMO' }],
{ callback: 'https://YOUR_APP/paid' },
);
TypeScript'da turlar uchinchi argumentni talab qiladi: havolani qaytarib olish uchun undefined yuboring.
Brauzerda havolani buning oʻrniga yangi ilovachada ochish uchun uchinchi argument sifatida funksiya yuboring. Bu funksiya chaqirilmaydi va hech narsa qaytmaydi. Uni bosish ishlovchisidan chaqiring, aks holda brauzer yangi ilovachani bloklashi mumkin va chaqiruv xato beradi.
Promise'lar va callback'lar
me, broadcast, yordamchilar va revokeToken promise qaytaradi. Buning oʻrniga callback ishlatish uchun oxirgi argument sifatida funksiya yuboring. U (error, result) ni oladi.
// Promise
try {
const result = await client.vote('USERNAME', 'AUTHOR', 'PERMLINK', 10000);
} catch (error) {
console.error(error.error, error.error_description);
}
// Callback
client.vote('USERNAME', 'AUTHOR', 'PERMLINK', 10000, (error, result) => {
if (error) console.error(error.error, error.error_description);
});
API xato bilan javob berganda promise API'ning xato tanasi, { error, error_description } bilan rad etiladi. Callback bilan esa oʻsha tana error argumenti boʻladi. Javob JSON boʻlmasa, promise tahlil xatosi bilan rad etiladi.
Python
Bu kutubxonalar jamoadan keladi. Ularni Hivesigner jamoasi emas, mualliflari yuritadi. Ularga tayanishdan oldin REST API bilan solishtirib koʻring.
| Kutubxona | Muallif |
|---|---|
| hivesigner-python-client: https://github.com/emre/hivesigner-python-client | emrebeyler |
beem, beem.hivesigner moduli: https://beem.readthedocs.io/en/latest/beem.hivesigner.html |
holger80 |