Android帐户转移API:从哪里获取AccountTransferClient.sendDataaccountType,transferData的transferData?

问题描述

我正在尝试实现Android帐户转移API,该API基本上可以让您将应用程序的帐户从旧手机转移到新手机,以便用户在新手机上使用您的应用程序时无需再次登录

但是我觉得文档缺少信息。 Account Transfer API

当我致电 'aliases' => [ 'App' => Illuminate\Support\Facades\App::class,'Artisan' => Illuminate\Support\Facades\Artisan::class,//'Auth' => Illuminate\Support\Facades\Auth::class,'Auth' => Illuminate\Support\Facades\CustomAuth::class,将帐户转移到新手机时,它没有告诉我我从何处获得AccountTransferClient.sendData(accountType,transferData)。我尝试查看AccountTransferClient docs以获得更多信息,但也没说太多。

谢谢!

解决方法

找到了示例应用https://github.com/android/identity-samples/tree/main/AccountTransferApi,显然,他们的工作是将帐户信息放入JSON obj,然后将JSON obj转换为字节数组(即transferData)。

val jsonArray = JSONArray()
for (account in accounts) {
    val accountJsonObject = JSONObject()
    try {
        accountJsonObject.put(KEY_ACCOUNT_NAME,account.name)
        val password = accountManager.getPassword(account)
        accountJsonObject.put(KEY_ACCOUNT_PASSWORD,password)
    } catch (e: JSONException) {
        Log.e(TAG,"Error while creating bytes for transfer",e)
        return null
    }
    jsonArray.put(accountJsonObject)
}
val jsonObject = JSONObject()
try {
    jsonObject.put(KEY_ACCOUNT_ARRAY,jsonArray)
} catch (e: JSONException) {
    Log.e(TAG,"Error",e)
    return null
}
val transferData = jsonObject.toString().toByteArray(Charset.forName("UTF-8"))

无论如何,强烈推荐示例应用程序。文档不够清晰!