我需要通过发送一个refreshtoken来捕获一个过期的令牌,作为回报,获取新的访问令牌和刷新令牌。下面我列出了我将要使用的代码。它写得不完整,因为我不完全理解一切。
@FormUrlEncoded
@POST("/api/o/token/")
Call<TokenModel> getToken(
@Field("username") String username,
@Field("password") String password,
@Field("client_id") String clientId,
@Field("client_secret") String clientSecret,
@Field("grant_type") String grantType
);
@FormUrlEncoded
@POST("/api/o/token/")
Call<TokenModel> getNewToken(
@Field("refresh_token") String refreshToken,
@Field("client_id") String clientId,
@Field("client_secret") String clientSecret,
@Field("grant_type") String grantType
);
@GET("/api/users/profile")
Call<UserProfile> getProfile();
拦截器
OkHttpClient client = new OkHttpClient.Builder()
.addInterceptor(logging)
.addInterceptor(new AccessTokenInterceptor(preferences))
.addInterceptor(new Interceptor() {
@NotNull
@Override
public Response intercept(@NotNull Chain chain) throws IOException {
Request original = chain.request();
Request request = original.newBuilder()
.header("Authorization", ?)
.method(original.method(), original.body())
.build();
Response response = chain.proceed(request);
Log.d("MyApp", "Code : "+response.code());
if (response.code() == 401){
?
return response;
}
return response;
}
})
.build();
我用问号指出了我不太明白的地方,我只是没有完全理解哈德。我应该在逗号后面加什么?服务器接收新令牌所需的一切(在我的例子中,它是string refreshtoken、string clientid、string clientsecret、string granttype)还是不是?那么,在这种情况下,tokenupdate()方法在任何地方都不起作用,只是一个例子,我怎么能继续使用改型呢
fun tokenUpdate () {
val sharedPref = application?.getSharedPreferences("userInfo", MODE_PRIVATE)
val tokenRefresh = sharedPref!!.getString("tokenRefresh", null)
val call: Call<TokenModel> = NetworkService.getInstance()
.jsonApi
.getNewToken(tokenRefresh,clientId,clientSecret,grantTypeRefreshToken)
call.enqueue(object : Callback<TokenModel> {
override fun onResponse(call: Call<TokenModel>, response: Response<TokenModel>) {
val editor = sharedPreferences!!.edit()
if (response.isSuccessful) {
response.body()?.let {
editor.putString("access_token", it.token)
editor.putString("token_Refresh", it.tokenRefresh)
editor.apply()
}
}
}
override fun onFailure(call: Call<TokenModel>, t: Throwable) {}
})
}
暂无答案!
目前还没有任何答案,快来回答吧!