连接至 UniPass Wallet
调用login
方法获取UniPass Account UniPassUserInfo
信息。
UniPass 目前支持自定义登录选项设置, 包括下列选项:
connectType
: 指定 UniPass 通过特定方式登录,目前提供的选项有google
,email
和both
. 默认值为both
, 表示允许支持的任意方式进行登录.authorize
: 如果设置为true
, UniPass 将会返回一个自动生成的Sign-in With Ethereum
消息和对应的签名. 默认值为false
.returnEmail
: 如果设置为true
, UniPass 账户邮箱 email 将会返回. 默认值为false
.forceLogin
: 如果设置为true
, 用户总是需要进行登录流程来完成连接,即使之前已经在网页端登录.
相关类型定义
interface UnipassCallBack <T>{
fun success(output: T?)
fun failure(exception: Exception)
}
data class LoginOption (
val connectType: ConnectType? = ConnectType.BOTH,
val authorize: Boolean? = false,
val returnEmail: Boolean? = false
)
class LoginOutput: BaseOutput(OutputType.Login) {
val userInfo: UserInfo? = null
}
data class UserInfo (
var email: String?,
var address: String,
var newborn: Boolean = false,
val message: String?,
val signature: String?
)
enum class OutputType {
@SerializedName("UP_LOGIN")
Login,
@SerializedName("UP_LOGOUT")
Logout,
@SerializedName("UP_SIGN_MESSAGE")
SignMessage,
@SerializedName("UP_TRANSACTION")
SendTransaction
}
enum class ConnectType(value: String) {
GOOGLE("google"),
EMAIL("email"),
BOTH("both"),
}
代码示例
unipassInstance.login(object : UnipassCallBack<LoginOutput> {
override fun success(output: LoginOutput?) {
Log.d("Unipass Login", "success")
}
override fun failure(error: Exception) {
Log.d("Unipass Login", error.message ?: "Something went wrong")
}
}, LoginOption(ConnectType.BOTH, authorize))
// LoginOption不是必需的,用于自定义登录选项
// 或者您可以使用重载的方法,以便用户按您选择的类型连接
// connectType 默认值为 BOTH
unipassInstance.login(ConnectType.GOOGLE, object : UnipassCallBack<LoginOutput> {
override fun success(output: LoginOutput?) {
Log.d("Unipass Login", "success")
}
override fun failure(error: Exception) {
Log.d("Unipass Login", error.message ?: "Something went wrong")
}
})
newborn
可以被用来追踪新注册用户。
Sign-in With Ethereum 签名验证
如果您将 authorize
设置为 true
,你可能需要进行 Sign-in With Ethereum 验签,请参考 Sign-in With Ethereum。