Wallet / Responder 用法
我们建议在我们的Kotlin Github仓库中查看Responder的示例实现。
初始化认证客户端
要初始化Auth客户端,在Android Application类中创建一个Auth.Params.Init
对象。 Init对象将需要application class、Project ID和application AppMetaData。
然后Auth.Params.Init
对象将被传递给AuthClient
对象initialize
函数。Auth.Params.Init
还允许通过传递URL字符串到relayUrl
属性自定义URL。iss
参数对于Wallet / Responder不能为空,它描述了Responder授权了什么。以太坊主网的示例iss
: did:pkh:eip155:1:0 0xb9c5714089478a327f09197987f16f9e5d936e8a
。更多关于did:pkh
方法的信息这里
val projectId = "" // Get Project ID at https://cloud.walletconnect.com/
val relayUrl = "relay.walletconnect.com"
val serverUrl = "wss://$relayUrl?projectId=${projectId}"
val appMetaData = Core.Model.AppMetaData(name = "Kotlin.Responder",
description = "Kotlin AuthSDK Responder Implementation",
url = "kotlin.responder.walletconnect.com",
icons = listOf("https://raw.githubusercontent.com/WalletConnect/walletconnect-assets/master/Icon/Gradient/Icon.png"),
redirect = "kotlin-responder-wc:/request"
)
CoreClient.initialize(relayServerUrl = serverUrl, connectionType = ConnectionType.AUTOMATIC, application = this,metaData = appMetaData)
AuthClient.initialize(
init = Auth.Params.Init(
core = CoreClient,
iss = ISSUER
)
) { error ->
Log.e(tag(this), error.throwable.stackTraceToString())
}
关于如何初始化CoreClient的更多内容,请访问CoreClient docs部分。
AuthClient.ResponderDelegate
AuthClient需要传递给它一个 AuthClient.ResponderDelegate
,以便能够公开从Dapp / Requester发送的异步更新。
object ResponderDelegate : AuthClient.ResponderDelegate {
init {
AuthClient.setResponderDelegate(this)
}
override fun onAuthRequest(authRequest: Auth.Event.AuthRequest) {
// Triggered when Dapp / Requester makes an authorisation request. Wallet / Responder should display message to user and ask him to approve or reject authorisation.
}
override fun onConnectionStateChange(connectionStateChange: Auth.Event.ConnectionStateChange) {
// Triggered whenever the connection state is changed
}
override fun onError(error: Auth.Event.Error) {
//Triggered whenever the error occurs with Relay Server
}
}
方法
Pair Clients
val pair = Auth.Params.Pair("wc:auth-...")
AuthClient.pair(pair)
要将钱包与Dapp / Requester配对,请调用AuthClient。配对函数需要一个Auth.Params.Pair
参数。 Auth.Params.Pair
是WC Uri将被传递的地方。
Session Approval
批准授权申请,使用CacaoSigner.sign
签署消息,需要私钥签署Cacao
对象,需要传递给Auth.Params.Respond.Result
对象并发送给Dapp / Requester。
val request: Auth.Event.AuthRequest = // Request from onAuthRequest
val cacao: Auth.Model.Cacao.Signature = CacaoSigner.sign(
request.message, // Message to be signed
PRIVATE_KEY, // Private key used to signing a message
SignatureType.EIP191 // Currently only EIP191 signing is supported
)
AuthClient.respond(Auth.Params.Respond.Result(request.id, cacao)) { error ->
Log.e("Responder respond approve", error.throwable.stackTraceToString())
}
Session Rejection
拒绝授权请求,用 Auth.Params.Respond.Error
回应Dapp / Requester. 注意:我们建议使用下面定义的错误消息和错误代码。
val request: Auth.Event.AuthRequest = // Request from onAuthRequest
AuthClient.respond(
Auth.Params.Respond.Error(request.id, 12001, "User Rejected Request") // Specifying Error codes will change in future
) { error ->
Log.e("Responder respond reject", error.throwable.stackTraceToString())
}
获取挂起请求列表
val pendingRequest: List<Auth.Model.PendingRequest> = AuthClient.getPendingRequest()
T获取挂起请求的列表, 调用 AuthClient.getPendingRequest()
返回 Auth.Model.PendingRequest
.