我已按照https://developers.google.com/上的指南操作,我可以在用户登录后获取已登录用户的Google ID令牌.但我注意到令牌将在1小时后过期.我找不到任何官方参考资料,告诉我如何处理过期的Google ID令牌,因此我只能要求用户再次点击Google登录按钮.
如何在旧版ID令牌过期后刷新有效的Google ID令牌,而不会打扰用户一次又一次地手动登录?
我在我的应用程序中使用 Google 登录,一旦用户登录并检索到 ID 令牌,我就会将 ID 令牌发送到我的反手服务器。现在,我会将 ID 令牌添加到每个 HTTP 请求的标头中,然后验证它,获取用户 ID 并将数据响应回我的应用程序。我想知道是否可以持久存储 ID 令牌并将其用于所有未来请求。ID 令牌会更改或过期吗?如果是这样,如何获得新的 ID 令牌?除了要求用户重新登录之外,我找不到任何方法。或者我应该只验证一次 ID 令牌并在以后的请求中直接使用 ID?
这是我的实体:
@Entity(tableName = "commits")
data class Commit(
@PrimaryKey
@ColumnInfo(name = "hash")
val hash: String,
@ColumnInfo(name = "changes", typeAffinity = ColumnInfo.BLOB)
var changes: List<DbChange>
)
Run Code Online (Sandbox Code Playgroud)
这是转换器:
class Converters {
companion object {
@JvmStatic
@TypeConverter
fun changesToByteArray(changes: List<DbChange>): ByteArray {
...
}
@JvmStatic
@TypeConverter
fun byteArrayToChanges(bytes: ByteArray): List<DbChange> {
...
}
}
}
Run Code Online (Sandbox Code Playgroud)
我已经在注释中添加了 Converters 类:
@Database(entities = [Commit::class], version = 1)
@TypeConverters(Converters::class)
abstract class AppRoomDatabase : RoomDatabase() {
...
}
Run Code Online (Sandbox Code Playgroud)
但是编译器仍然抱怨:
e: /home/perqin/workspaces/cent-budget/cent-budget/app/build/tmp/kapt3/stubs/eaDebug/com/perqin/centbudget/data/sync/commit/Commit.java:20: error: Cannot figure out how to save this …Run Code Online (Sandbox Code Playgroud) 使用 RadioButton 时出现问题。RadioButton的layout_height必须是15dp,官方设计指南说1sp就是1dp,所以我把字体大小设置为1sp,但是TextView的layout_height比15dp要大一点。好像字体大小为15sp时,TextView的layout_height是18dp。那么字体大小和layout_height有什么关系呢?