我正在构建一个使用laravel和passport进行身份验证的android应用程序,我的注销方法如下所示
public function logout(Request $request){
$accessToken = Auth::user()->token();
DB::table('oauth_refresh_tokens')
->where('access_token_id', $accessToken->id)
->update(['revoked' => true]);
$accessToken->revoke();
return response()->json([], 204);
}
我和邮递员一起测试了它,它运行正常,返回204,没有应有的内容。
Postman screenshot
但当我尝试从android应用程序调用它时,它总是返回401,而不是授权消息
我所有的其他POST方法都工作正常,这是我在android上使用改型的电话
private void logout() {
tokenManager = TokenManager.getInstance(getSharedPreferences("prefs",MODE_PRIVATE));
Log.i("tokenLogout",tokenManager.getToken().getAccessToken());
call = service.logout(tokenManager.getToken());
call.enqueue(new Callback<AccessToken>() {
@Override
public void onResponse(Call<AccessToken> call, Response<AccessToken> response) {
Log.i(TAG, "logout response: " + response.code());
//startActivity(new Intent(mapActivity.this,loginActivity.class));
}
@Override
public void onFailure(Call<AccessToken> call, Throwable t) {
Log.i(TAG, "logout failed");
}
});
}
这是我的ApiService接口
@POST("logout")
@FormUrlEncoded
Call<AccessToken> logout(@Field("access_token") AccessToken accessToken);