SDK'lar
Resmî JavaScript SDK'sı giriş adreslerini ve imza bağlantılarını sizin yerinize oluşturur ve Hivesigner API'sini çağırır. Python için topluluk kütüphaneleri vardır. Başka herhangi bir dil REST API uç noktalarını doğrudan çağırabilir.
JavaScript SDK
SDK, hivesigner adlı npm paketidir. Kaynağı https://github.com/ecency/hivesigner-sdk adresindedir. TypeScript ile yazılmıştır ve türlerini birlikte getirir.
Sürüm 4, yerleşik fetch işlevini kullandığı için Node.js 18 ya da sonrasını gerektirir. Tarayıcılarda ES2017 ya da sonrasını gerektirir. Genel bir fetch olmayan yerlerde SDK'yı kullanmadan önce bir polyfill ekleyin. Daha eski bir Node.js üzerinde sürüm 3'te kalın.
Kurulum
npm install hivesigner
Derleme adımı olmayan bir sayfa için tarayıcı paketini yükleyin. O, hivesigner adlı genel bir değişken tanımlar:
<script src="https://cdn.jsdelivr.net/npm/hivesigner@4/lib/hivesigner.min.js"></script>
Bir istemci oluşturun
import { Client } from 'hivesigner';
const client = new Client({
app: 'CLIENT_ID',
callbackURL: 'REDIRECT_URI',
scope: ['posting'],
});
| Seçenek | Anlamı |
|---|---|
app |
Uygulama hesabınız, client_id olarak gönderilir. |
callbackURL |
Hivesigner'ın kullanıcıyı geri gönderdiği yer. Uygulamanızın geri çağırma adreslerinden biriyle karakteri karakterine aynı olmalıdır (düz http kullanan bir geri döngü adresi ana makine ve port bakımından farklı olabilir, bkz. Geri çağırma adresleri). |
scope |
Bir liste; virgüllerle birleştirilip scope parametresine konur. Bkz. Kapsamlar. |
responseType |
Kod akışı için 'code'. Token akışında yazmayın. |
accessToken |
Kullanıcının erişim token'ı, elinizde zaten varsa. |
apiURL |
API'nin kaynağı. SDK sonuna /api/ ekler. Varsayılanı https://hivesigner.com değeridir. |
setApp, setCallbackURL, setScope, setAccessToken, removeAccessToken ve setApiURL istemciyi sonradan değiştirir. Her biri istemciyi döndürür.
Kullanıcıyı giriş yaptırın
getLoginURL(state, account) giriş adresini döndürür:
const url = client.getLoginURL('STATE');
// https://hivesigner.com/oauth2/authorize?client_id=CLIENT_ID&redirect_uri=REDIRECT_URI&scope=posting&state=STATE
stategeri çağırma adresinize değişmeden döner. Yanıtı isteğe bağlamak için kullanın.accountisteğe bağlıdır: bir kullanıcı adı. Hivesigner o hesap cihazdaysa onu seçer, değilse yok sayar.
Bir tarayıcıda client.login({ state: 'STATE' }), kullanıcıyı hesap belirtmeden aynı adrese gönderir.
Token akışında geri çağırma adresiniz access_token, expires_in ve username değerlerini alır. Token'ı istemciye verin:
client.setAccessToken('ACCESS_TOKEN');
SDK'da kod akışının takası için bir yöntem yoktur. Sunucunuz kodu ve istemci gizli anahtarını API'ye kendisi gönderir; Kodu takas edin bunu gösterir.
Kullanıcıyı alın
const me = await client.me();
// { user, _id, name, account, scope, user_metadata }
account, zincirin döndürdüğü biçimde kullanıcının Hive hesabıdır. scope, token'ın neye izin verdiğini listeler.
Yayınlayın
broadcast(operations) operasyonları API'ye gönderir ve API onları kullanıcı adına yayınlar. API yalnızca token'ın kullanıcısının yazdığı gönderi operasyonlarını kabul eder: vote, comment, delete_comment, comment_options, gönderi yetkisiyle custom_json, claim_reward_balance ve profil verisi için account_update2. Bkz. Yayın neyi kabul eder.
await client.broadcast([
['vote', { voter: 'USERNAME', author: 'AUTHOR', permlink: 'PERMLINK', weight: 10000 }],
]);
Kullanıcıyı her operasyonda adlandırın. API __signer değerini yerine koymaz.
Şu yardımcılar birer operasyon oluşturur ve broadcast işlevini çağırır:
| Yöntem | Ne yayınlar |
|---|---|
vote(voter, author, permlink, weight) |
vote. weight değeri -10000 ile 10000 (%100) arasındadır. |
comment(parentAuthor, parentPermlink, author, permlink, title, body, jsonMetadata) |
comment. Yeni bir gönderi için parentAuthor değeri '' olur. jsonMetadata bir nesne olabilir: SDK onu dizeye çevirir. |
deleteComment(author, permlink) |
delete_comment |
customJson(requiredAuths, requiredPostingAuths, id, json) |
custom_json. requiredAuths olarak [], requiredPostingAuths olarak ['USERNAME'] gönderin. json bir dizedir. |
reblog(account, author, permlink) |
Gönderiyi yeniden paylaşan, id değeri follow olan bir custom_json |
follow(follower, following) |
id değeri follow ve what: ['blog'] olan bir custom_json |
unfollow(unfollower, unfollowing) |
id değeri follow ve what: [] olan bir custom_json |
ignore(follower, following) |
id değeri follow ve what: ['ignore'] olan bir custom_json (sessize alma) |
claimRewardBalance(account, rewardHive, rewardHbd, rewardVests) |
claim_reward_balance. Tutarlar '0.000 HIVE', '0.000 HBD' ve '1.000000 VESTS' gibi dizelerdir. |
updateUserMetadata() artık kullanılmıyor. Bir kullanıcının profilini değiştirmek için yeni bir posting_json_metadata ile account_update2 yayınlayın.
Çıkış yapın
revokeToken(), SDK'nın çıkış çağrısıdır. Token'ı API'nin iptal uç noktasına gönderir ve sonra onu istemciden kaldırır. Çağrı reddedildiğinde removeAccessToken() işlevini kendiniz çağırın. Token'ı uygulamanızın sakladığı yerden de silin.
Uygulamanızın erişimini tümüyle bitirmek için kullanıcı onu https://hivesigner.com/authorized-apps adresinden kaldırır. Bkz. Bir uygulamanın erişimini görme ve kaldırma.
İmza bağlantıları
sendOperation(op, params), sendOperations(ops, params) ve sendTransaction(tx, params) bir https://hivesigner.com/sign/... bağlantısı döndürür. params değeri callback, no_broadcast ve signer alır. Bkz. İmza bağlantıları.
import { sendOperation } from 'hivesigner';
const link = sendOperation(
['transfer', { from: '__signer', to: 'RECIPIENT', amount: '1.000 HIVE', memo: 'MEMO' }],
{ callback: 'https://YOUR_APP/paid' },
);
TypeScript içinde türler üçüncü argümanı zorunlu kılar: bağlantıyı geri almak için undefined gönderin.
Bir tarayıcıda, bağlantıyı bunun yerine yeni bir sekmede açmak için üçüncü argüman olarak bir işlev gönderin. O işlev çağrılmaz ve hiçbir şey döndürülmez. Onu bir tıklama işleyicisinden çağırın, yoksa tarayıcı yeni sekmeyi engelleyebilir ve çağrı hata verir.
Promise'ler ve geri çağırmalar
me, broadcast, yardımcılar ve revokeToken bir promise döndürür. Bunun yerine geri çağırma kullanmak için son argüman olarak bir işlev gönderin. O işlev (error, result) alır.
// 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 bir hatayla yanıt verdiğinde promise, API'nin hata gövdesiyle reddedilir: { error, error_description }. Geri çağırma kullanıyorsanız o gövde error argümanıdır. Yanıt JSON değilse promise ayrıştırma hatasıyla reddedilir.
Python
Şu kütüphaneler topluluktan gelir. Onları Hivesigner ekibi değil, yazarları sürdürür. Güvenmeden önce REST API ile karşılaştırın.
| Kütüphane | Yazar |
|---|---|
| hivesigner-python-client: https://github.com/emre/hivesigner-python-client | emrebeyler |
beem, beem.hivesigner modülü: https://beem.readthedocs.io/en/latest/beem.hivesigner.html |
holger80 |