其他
通过 Block Store 实现账户无缝迁移
什么是 Block Store?
Block Store 的工作原理
当用户登录您的应用时 (或是在此之后的任何时间),您可以将您为用户生成的身份认证令牌保存至 Block Store。
当您使用 Block Store 保存令牌后,令牌会被加密并保存在设备的本地存储中。
当用户使用 "设备到设备" 的恢复流程时,数据会被传输到新设备上。
如果用户在 "设备到设备" 的恢复时选择同时恢复他们的数据,当用户在新设备上打开您的应用时,Block Store 会为您的应用取回令牌。
为什么要使用 Block Store?
虽然此 API 为可选接入,但是接入它可以为您的应用带来如下好处:
如果用户不必劳神记住认证凭据,那他们也会更愿意使用唯一且更难以被网络钓鱼的密码。 消除由登录带来的、可能最终导致您用户流失的使用阻力。 集成 Block Store 十分简单,而且无论您的登录方式如何皆可正常工作。 Google 会验证用户的身份。
如何在我的应用中添加它?
<!-- Copyright 2021 Google LLC.
SPDX-License-Identifier: Apache-2.0 -->
val client = Blockstore.getClient(this)
val token = StoreBytesData.Builder()
.setBytes(/* BYTE_ARRAY */)
.build()
// storeBytes 应当在用户验证完成之后再调用
client.storeBytes(token)).addOnSuccessListener{ result ->
Log.d(TAG, “Stored: ${result} bytes”)
}
当用户在新设备上完成 "设备到设备" 的恢复流程时,Block Store 会取回您的令牌。由于用户已经同意在恢复流程中恢复您应用的数据,所以此操作无需额外的许可。当用户打开您的应用时,您可以通过调用 retrieveBytes() 从 Block Store 请求您的令牌。取得的令牌可以用于在新设备上保持用户的登录状态。如果调用此接口的应用没有令牌,Block Store 依然会调用 onSuccessListener(),但结果会是空字节。如果您在同一个设备上先后调用 storeBytes() 和 retrieveBytes(),retrieveBytes() 会返回先前调用的 storeBytes() 设置的字节。
<!-- Copyright 2021 Google LLC.
SPDX-License-Identifier: Apache-2.0 -->
val client = Blockstore.getClient(this)
client.retrieveBytes()
.addOnSuccessListener { result ->
Log.d(TAG, “Retrieved: ${String(result)}”)
}
.addOnFailureListener { e ->
Log.e(TAG, “Failed to retrieve bytes”, e)
}
总结
欢迎您通过下方二维码向我们提交反馈,或分享您喜欢的内容、发现的问题。您的反馈对我们非常重要,感谢您的支持!
推荐阅读