认证
使用MYKEY Android SDK进行认证,需要先准备环境和初始化SDK。
第三方应用唤起MYKEY进行认证绑定。参数请详见类定义:AuthorizeRequest 和 MYKEYWalletCallback。(为了更强的安全性,可以设置CallBackUrl进行服务端验签。)
MYKEY将签名后的数据POST到第三方应用提供的CallBackUrl,请求第三方应用服务端验证,第三方应用服务端需要从合约数据中获取该用户MYKEY账号的Reserve Key进行验签,获取方式参考 MYKEY链上数据。
第三方应用提供的CallBackUrl接口参数:
{
"protocol":"", // 协议名,使用MYKEY双向绑定方式协议为MYKEY,使用MYKEY轻量级方式协议为MYKEYSimple
"version":"", // 协议版本信息,如1.0
"dapp_key":"", // MYKEY分配的DAPP_KEY,使用MYKEY双向绑定方式时提供,由MYKEY服务端分配,从dapp客户端初始化方法传入
"uuID":"", // 用户id,MYKEY双向绑定方式此字段为dapp客户端初始化时传入的uuid;MYKEY轻量级方式此字段为用户的设备ID;
"sign":"", // eos签名, 签名数据:timestamp + account + uuID + ref
"ref":"", // 来源, mykey
"timestamp":"", // 当前UNIX时间戳, 精确到秒
"account":"", // eos账户名
"chain": "" // 值为ANY, EOS, ETH,或者不传递该参数
}验签公式:
认证时,MYKEY会返回mykeyUID和mykeyUIDSignature字段给第三方应用。mykeyUID是用户在MYKEY的唯一标识。
// 构造未签名数据
let message = hex(timestamp + account + uuID + ref)
let unsignedData = "\x19Ethereum Signed Message:\n" + message.length + message
// 构造mykeyUID的未签名数据
let messageForMykeyUID = timestamp + account + uuID + ref + mykeyUID
let unsignedDataForMykeyUID = "\x19Ethereum Signed Message:\n" + messageForMykeyUID.length + messageForMykeyUID// 构造未签名数据
let unsignedData = timestamp + account + uuID + ref
// 使用ReserveKey验证签名
ecc.verify(signature, unsignedData, pubkey) === true
// 构造mykeyId的未签名数据
let unsignedDataForMykeyId = timestamp + account + uuID + ref + mykeyId
// 使用ReserveKey验证mykeyId签名
ecc.verify(signature, unsignedDataForMykeyId, pubkey) === true返回格式:
调用例子:
Last updated
Was this helpful?