基于 Steem Connect V2 开发应用

in #cn6 years ago (edited)

image.png

Steem上的应用生态正变得越来越好,其中Steem Connect的出现起到非常重要的作用。它为去中心化平台提供了一个安全的中心化授权接口,从而使软件开发变的简单,高效。此教程用来介绍基于 Steem Connect V2 的应用开发流程。

PS: SteemConnect 有V1 版本,但不推荐使用,以下 SteemConnect 特指 V2

基本原理

同我们使用微信,QQ注册登录第三方网站一样,SteemConnect也使用了一种称为OAuth2的技术,阮一峰的这篇文章中有详细的讲解。

简单理解:第三方应用 A 要获取用户 B 的权限,必须向 B 信任的中心 C 提出申请,B 向 C 输入私钥批准申请,C 将包含该权限的Token 给予 A,A就可以使用 B 的相应权限。

好处:A 从未接触过 B 的私钥,且 B 可以只授予 A 部分权限,权限可通过控制Token过期随时收回。

开发者注册

第三方应用要接入SteemConnect,需要事先注册,注册地址:https://v2.steemconnect.com/dashboard

登录之后,点击左下方的My Apps, 在 My Apps 界面中点击 New App
image.png

这里需要 3 Steem 来给自己的 APP 注册一个账号,此账号由官方管理,你接触不到私钥。账号名称没有强制要求,但惯例以app结尾,例如busy.app, cnsteem.app

APP 注册成功之后,我们需要对 APP 进行配置,点击My Apps -> 选择 App -> 选择Edit
image.png

最重要的是Redirect URI(s)的设置,它可以设置多个,但一定要与授权之后返回的页面地址保持相同。比如在本地测试,用户在http://localhost:8080/ 申请登录,Redirect URI(s)中必须有相同的地址!

应用开发

Steemit 官方为我们提供了完整的 Javascript 开发接口和示例。
https://github.com/steemit/sc2-sdk
https://github.com/cnsteem/sc2-angular

以提供的Angular为例,需要修改 app.js, 适配自己的app

sc2.init({
  app: 'cnsteem.app',
  callbackURL: 'http://localhost:8080/',
  scope: ['vote', 'comment']
});

当用户授权成功后,服务器会返回一个Access Token, 通过该 token 调用 Steemconnect的API,进行点赞,评论,发帖等相关操作。
具体 Demo 可参考:https://cnsteem.github.io/sc2-angular/

结尾

国内程序员特别喜欢使用Vue 这个前端框架,通过 Vue 配合 sc2-sdk 可以开发许多有意思的应用,如果有兴趣可以尝试一下。

另外关于 steem 开发的文章鼓励大家加上 cn-progamming 标签 !

Sort:  

今天恰好看到你文章最后说的一句话。我们商议一下,统一一下。

我也想把中文区开发的文章想集合在一起,我用了一个cn-bug(中国虫,调侃意味比较强),然后看到@ety001在用cn-dev这标签。不如我们三个人商议一个,弄一个集中的标签吧。

其实早就有倡议使用cn-programming 这个标签了,可能你们来的比较晚...

刚才也和O哥讨论一下,他和我说了,@abit提议的,但感觉大家用的并不是很多啊,而且感觉这个名字好长

@dapeng 哥 让我给你留言
说你可以帮助把 使用steem如何开发个人站点的内容补充到新书里
我觉得 很多开发,不能顺利的使用steem作为基础开发站点,主要原因是开发文档的缺失。
如果能够以busy为例,或者单独新做一个很简单的网站,能够从头开始一步步完成的示例,那就更好了,肯定会受到很多人的欢迎。
这是我的个人想法。。希望能够采纳 哈哈

我觉得挺好的建议,我想找几个有兴趣的程序员从头开发一个steem竞猜的网站,类似steem 体彩中心,每个人都可以在上边发表竞猜的活动。。不过最近过年比较忙,得年后了。。

是不是所谓的授权成功就是把xxx.app 这个账户加到用户的对应权限里?
我看好多用户账户的posting权限那显示着busy和乌托邦之类的

用的多重签名--multi-authority, 应该是把你的权限给xxx.app账号了,我记得你写过类似的呢

具体可以看这篇 Steem multi-authority permissions and how Posting authority works

嗯,多签相关文章我写过,我们茶馆就用的多签
但是感觉把自己账户里签一堆APP还是有点不舒服,强迫症患者往往都有洁癖😀

哇塞,原来你真的没登录过任何除了steemit之外的应用啊, 其实不看steemd也就无所谓了,但steemconnect给开发者带了很多好处。

看到现在的steem越来越有活力真的好开心

哈哈,因为每个人都是股东

用你的二次开发看看能不能submit

Your Post Has Been Featured on @Resteemable!
Feature any Steemit post using resteemit.com!
How It Works:
1. Take Any Steemit URL
2. Erase https://
3. Type re
Get Featured Instantly � Featured Posts are voted every 2.4hrs
Join the Curation Team Here | Vote Resteemable for Witness

Upvoted ☝ Have a great day!

问一个问题。

当用户授权成功后,服务器会返回一个Access Token, 通过该 token 调用 Steemconnect的API,进行点赞,评论,发帖等相关操作。

是不是我得到授权之后每个页面都要加那个长尾巴,要不就没有授权?

http://localhost/index-sc2.html?access_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJyb2xlIjoiYXBwIiwicHJveHkiOiJzdGVlbXRoaW5rLmNvbSIsInVzZXIiOiJyaWxleWdlIiwic2NvcGUiOlsidm90ZSIsImNvbW1lbnQiXSwiaWF0IjoxNTE4NDE2NTk4LCJleHAiOjE1MTkwMjEzOTh9.2XzMx8M-jcQww4FXSaKHqrf75cRpSuJO6i0mzWiT7zI&expires_in=604800&username=rileyge

还有一个问题,授权后到达的页面只能是指定的页面吗?不能跳转授权前的页面吗?还是需要自己在指定页面写程序跳转。

This post has received an upvote from spotlight thanks to: @resteemable.

steemconnect的文档目前还是比较欠缺的。

不过接口都比较全了,配合 https://v2.steemconnect.com/docs/steemjs 写东西还是很容易的..

目前,SteemEditor的开发是基于 sc2 和 vue 的。基础功能已经搞定了,可以通过 steemconnect 登陆并发文,还有一个小问题没有解决,就是如何设定收益。

这个busy代码里应该可以找到吧?

有道理,忘了这一茬了。

麻烦问下 SteemEditor 开源吗? 我想加入你们开发

开源,不过目前大的框架还没有最终确定,如果贡献代码的话,先提个issue介绍下你想添加的功能,我们一起讨论下。

地址:https://github.com/ety001/steem-editor

也可以加入这里,@ety001 一起讨论, https://discord.gg/cJj2CVt

Coin Marketplace

STEEM 0.29
TRX 0.12
JST 0.032
BTC 63867.81
ETH 3135.89
USDT 1.00
SBD 3.84