From 1a047b79a11bf29ba3c8fccf0913c78c2733236a Mon Sep 17 00:00:00 2001 From: Eric85710 Date: Sat, 4 Jul 2026 16:15:30 +0800 Subject: [PATCH] dm-189 --- .../example/login_v3/data/api/Main_API_Service.kt | 13 +++++++++++-- .../login_v3/data/repository/basic/Token_Manager.kt | 2 ++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/example/login_v3/data/api/Main_API_Service.kt b/app/src/main/java/com/example/login_v3/data/api/Main_API_Service.kt index eb1721a..edeed92 100644 --- a/app/src/main/java/com/example/login_v3/data/api/Main_API_Service.kt +++ b/app/src/main/java/com/example/login_v3/data/api/Main_API_Service.kt @@ -20,6 +20,13 @@ import retrofit2.http.Query data class RefreshRequest( val refresh_token: String ) +@JsonClass(generateAdapter = true) +data class RefreshResponse( + val access_token: String, + val expires_in: Int, + val refresh_token: String, + val token: String? = null // 💡 設為可空並給預設值,防止後端沒吐時崩潰 +) interface TecnologiaApi { @@ -34,8 +41,10 @@ interface TecnologiaApi { @POST("api/auth/login") suspend fun login(@Body body: LoginRequest): Response - @POST("api/auth/refresh") - suspend fun refreshToken(@Body body: RefreshRequest): Response + // 注意:如果是用 retrofit2.Response 包裹,請確保對應的 DTO 欄位都有容錯 + @POST("api/auth/refresh") // 舉例你的路徑 + suspend fun refreshToken(@Body request: RefreshRequest): Response + // 取得個人資料:通常需要 Token @GET("api/me") diff --git a/app/src/main/java/com/example/login_v3/data/repository/basic/Token_Manager.kt b/app/src/main/java/com/example/login_v3/data/repository/basic/Token_Manager.kt index c44b16f..718278c 100644 --- a/app/src/main/java/com/example/login_v3/data/repository/basic/Token_Manager.kt +++ b/app/src/main/java/com/example/login_v3/data/repository/basic/Token_Manager.kt @@ -1,6 +1,7 @@ package com.example.login_v3.data.repository.basic import android.content.Context +import android.util.Log import androidx.datastore.core.DataStore import androidx.datastore.preferences.core.Preferences import androidx.datastore.preferences.core.booleanPreferencesKey @@ -8,6 +9,7 @@ import androidx.datastore.preferences.core.edit import androidx.datastore.preferences.core.longPreferencesKey import androidx.datastore.preferences.core.stringPreferencesKey import androidx.datastore.preferences.core.stringSetPreferencesKey +import com.example.login_v3.data.api.RefreshRequest import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.map import javax.inject.Inject