SDK
SDK JavaScript resmi menyusun URL masuk dan tautan tanda tangan serta memanggil API Hivesigner untuk Anda. Untuk Python ada pustaka dari komunitas. Bahasa lain mana pun dapat memanggil REST API langsung.
SDK JavaScript
SDK-nya adalah paket npm hivesigner. Sumbernya ada di https://github.com/ecency/hivesigner-sdk. Ditulis dalam TypeScript dan membawa tipenya sendiri.
Versi 4 memerlukan Node.js 18 atau yang lebih baru, karena memakai fetch bawaan. Di peramban ia memerlukan ES2017 atau yang lebih baru. Di tempat yang tidak punya fetch global, tambahkan polyfill sebelum memakai SDK. Pada Node.js yang lebih lama, tetaplah di versi 3.
Pemasangan
npm install hivesigner
Untuk halaman tanpa langkah build, muat bundel peramban. Bundel itu mendefinisikan hivesigner global:
<script src="https://cdn.jsdelivr.net/npm/hivesigner@4/lib/hivesigner.min.js"></script>
Membuat klien
import { Client } from 'hivesigner';
const client = new Client({
app: 'CLIENT_ID',
callbackURL: 'REDIRECT_URI',
scope: ['posting'],
});
| Pilihan | Arti |
|---|---|
app |
Akun aplikasi Anda, dikirim sebagai client_id. |
callbackURL |
Ke mana Hivesigner mengembalikan orang itu. Harus salah satu callback aplikasi Anda, aksara demi aksara (callback loopback dengan http biasa boleh berbeda host dan portanya, lihat Callback). |
scope |
Sebuah daftar, disambung dengan koma ke dalam parameter scope. Lihat Cakupan. |
responseType |
'code' untuk alur kode. Hilangkan untuk alur token. |
accessToken |
Token akses orang itu, kalau Anda sudah punya. |
apiURL |
Asal API-nya. SDK menambahkan /api/ padanya. Bawaannya https://hivesigner.com. |
setApp, setCallbackURL, setScope, setAccessToken, removeAccessToken dan setApiURL mengubah klien di kemudian waktu. Masing-masing mengembalikan klien itu.
Memasukkan orangnya
getLoginURL(state, account) mengembalikan URL masuk:
const url = client.getLoginURL('STATE');
// https://hivesigner.com/oauth2/authorize?client_id=CLIENT_ID&redirect_uri=REDIRECT_URI&scope=posting&state=STATE
statekembali ke callback Anda tanpa perubahan. Pakai itu untuk mengikat jawaban pada permintaan.accountbersifat pilihan: sebuah nama pengguna. Hivesigner memilih akun itu ketika akun tersebut ada di perangkat dan mengabaikannya kalau tidak.
Di peramban, client.login({ state: 'STATE' }) mengirim orang itu ke URL yang sama, tanpa akun.
Dalam alur token, callback Anda menerima access_token, expires_in dan username. Berikan tokennya kepada klien:
client.setAccessToken('ACCESS_TOKEN');
SDK tidak punya metode untuk penukaran pada alur kode. Server Anda sendiri yang mengirim kode dan rahasia klien ke API, seperti ditunjukkan Menukarkan kode.
Mengambil orangnya
const me = await client.me();
// { user, _id, name, account, scope, user_metadata }
account adalah akun Hive orang itu seperti yang dikembalikan rantai. scope mendaftar apa saja yang diizinkan token itu.
Menyiarkan
broadcast(operations) mengirim operasi ke API, yang menyiarkannya untuk orang itu. API hanya menerima operasi posting yang penulisnya adalah orang pemilik token: vote, comment, delete_comment, comment_options, custom_json dengan otoritas posting, claim_reward_balance dan account_update2 untuk metadata profil. Lihat Yang diterima broadcast.
await client.broadcast([
['vote', { voter: 'USERNAME', author: 'AUTHOR', permlink: 'PERMLINK', weight: 10000 }],
]);
Sebutkan orangnya di tiap operasi. API tidak mengganti __signer.
Metode pembantu berikut masing-masing menyusun satu operasi lalu memanggil broadcast:
| Metode | Menyiarkan |
|---|---|
vote(voter, author, permlink, weight) |
vote. weight berkisar dari -10000 sampai 10000 (100%). |
comment(parentAuthor, parentPermlink, author, permlink, title, body, jsonMetadata) |
comment. Untuk tulisan baru, parentAuthor bernilai ''. jsonMetadata boleh berupa objek: SDK mengubahnya menjadi untai. |
deleteComment(author, permlink) |
delete_comment |
customJson(requiredAuths, requiredPostingAuths, id, json) |
custom_json. Berikan [] sebagai requiredAuths dan ['USERNAME'] sebagai requiredPostingAuths. json berupa untai. |
reblog(account, author, permlink) |
custom_json dengan id follow, yang membagikan ulang tulisan itu |
follow(follower, following) |
custom_json dengan id follow, what: ['blog'] |
unfollow(unfollower, unfollowing) |
custom_json dengan id follow, what: [] |
ignore(follower, following) |
custom_json dengan id follow, what: ['ignore'] (bisukan) |
claimRewardBalance(account, rewardHive, rewardHbd, rewardVests) |
claim_reward_balance. Jumlahnya berupa untai seperti '0.000 HIVE', '0.000 HBD' dan '1.000000 VESTS'. |
updateUserMetadata() sudah usang. Untuk mengubah profil seseorang, siarkan account_update2 dengan posting_json_metadata yang baru.
Keluar
revokeToken() adalah panggilan keluar milik SDK. Ia mengirim token ke titik akhir pencabutan API lalu menghapusnya dari klien. Ketika panggilan itu gagal, panggil removeAccessToken() sendiri. Hapus juga tokennya di mana pun aplikasi Anda menyimpannya.
Untuk mengakhiri akses aplikasi Anda selamanya, orang itu mencabutnya di https://hivesigner.com/authorized-apps. Lihat Melihat dan mencabut akses sebuah aplikasi.
Tautan tanda tangan
sendOperation(op, params), sendOperations(ops, params) dan sendTransaction(tx, params) mengembalikan tautan https://hivesigner.com/sign/.... params menerima callback, no_broadcast dan signer. Lihat Tautan tanda tangan.
import { sendOperation } from 'hivesigner';
const link = sendOperation(
['transfer', { from: '__signer', to: 'RECIPIENT', amount: '1.000 HIVE', memo: 'MEMO' }],
{ callback: 'https://YOUR_APP/paid' },
);
Di TypeScript, tipenya mensyaratkan argumen ketiga: berikan undefined untuk mendapatkan tautannya.
Di peramban, berikan sebuah fungsi sebagai argumen ketiga untuk membuka tautan di tab baru. Fungsi itu tidak dipanggil dan tidak ada yang dikembalikan. Panggil dari penangan klik, kalau tidak peramban dapat menghalangi tab baru itu dan panggilannya melempar galat.
Promise dan callback
me, broadcast, metode pembantu dan revokeToken mengembalikan sebuah promise. Berikan sebuah fungsi sebagai argumen terakhir untuk memakai callback sebagai gantinya. Fungsi itu menerima (error, result).
// 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);
});
Ketika API menjawab dengan galat, promise itu ditolak dengan badan galat milik API, { error, error_description }. Dengan callback, badan itulah argumen error. Ketika jawabannya bukan JSON, penolakannya membawa galat penguraian.
Python
Pustaka berikut berasal dari komunitas. Penulisnya yang merawatnya, bukan tim Hivesigner. Bandingkan dengan REST API sebelum Anda bersandar padanya.
| Pustaka | Penulis |
|---|---|
| hivesigner-python-client: https://github.com/emre/hivesigner-python-client | emrebeyler |
beem, modul beem.hivesigner: https://beem.readthedocs.io/en/latest/beem.hivesigner.html |
holger80 |