代码之家  ›  专栏  ›  技术社区  ›  lmiskovic

Laravel API,从android调用401时不受干扰/改装

  •  0
  • lmiskovic  · 技术社区  · 6 年前

    我正在构建一个使用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);
    
    1 回复  |  直到 6 年前
        1
  •  0
  •   Emmanuel Montt    6 年前

    尝试使用

    Call<AccessToken> logout(@Header("Authorization") String token,@Field("access_token") AccessToken accessToken);
    

    在您的代码使用中

    call = service.logout("Bearer : XXXXX",tokenManager.getToken());
    

    我建议您使用HttpLoggingInterceptor,以便查看有关您的请求的所有日志。url: https://github.com/square/okhttp/tree/master/okhttp-logging-interceptor