내 앱에서 로그 아웃해야합니다.Android에서 Retrofit을 사용하여 로그 아웃
이 내 php
스크립트입니다
@POST("api/logout/")
Call<ApiResponse> logOutUser(@Query("token") String token);
내가 로그 아웃을위한 버튼이 있습니다 :이 POST
매개 변수를 사용하여 API를 호출
public function logoutAction(Request $request){
$requestData=json_decode($request->getContent(),1);
$em=$this->get('doctrine')->getEntityManager();
if(isset($requestData['token'])){
if($userToken=$em->getRepository('NavZUserBundle:UserToken')->findOneBy(array('token'=>$requestData['token']))){
$em->remove($userToken);
$em->flush($userToken);
$response['status']='success';
$response['msg']="Logged out successfully";
}else{
$response['status']='fail';
$response['msg']="Mobile User is already logged out";
}
}else{
$response['status']='fail';
$response['msg']="Missing required parameter";
}
return new JsonResponse($response);
}
입니다.
@OnClick(R.id.tv_signout)
void onSignOut(View view) {
logOutMethod();
}
private void logOutMethod() {
ApiService apiService = RestClient.getClient();
Call<ApiResponse> logOut = apiService.logOutUser(getPreference().getToken());
Log.e(TAG, "logOutMethod one: "+getPreference().getToken());
Log.e(TAG, "logOutMethod two: "+logOut);
logOut.enqueue(new Callback<ApiResponse>() {
@Override
public void onResponse(Response<ApiResponse> response) {
if (response.isSuccess()){
ApiResponse result = response.body();
if (result.getData() != null){
goToLogInActivity();
Snackbar.make(findViewById(android.R.id.content), result.getMsg(), Snackbar.LENGTH_LONG).show();
}else {
Snackbar.make(findViewById(android.R.id.content), result.getMsg(), Snackbar.LENGTH_LONG).show();
}
}else {
Snackbar.make(findViewById(android.R.id.content), response.message(), Snackbar.LENGTH_LONG).show();
}
}
@Override
public void onFailure(Throwable t) {
}
});
}
private void goToLogInActivity(){
getPreference().removeLoginPreferences();
Intent intent = new Intent(this, LoginActivity.class);
finish();
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
overridePendingTransition(0, 0);
startActivity(intent);
}
디버그 후 :
data = null
msg = "Missing required parameter"
status = "fail"
을 그리고 내 응용 프로그램도 SnackBar
을 던졌습니다 :
ApiResponse result = response.body();
방법 response.body()
예외 :
E/SettingsActivity: logOutMethod one: f7177163c833dff4b38fc8d2872f1ec658940cbf280ce
E/SettingsActivity: logOutMethod two: [email protected]8
그러나 일부
메시지Missing required parameter
및 앱이 로그 아웃하지 않습니다.
POST 방법을 사용하여 로그 아웃 할 수있는 방법은 무엇입니까? 여기서 무엇을 할 수 있습니까?
아, 저도 그렇게 생각합니다. 로그 아웃을 위해 로그인 사용자의 토큰을 설정하는 방법은 무엇입니까? –
서버의 스크립트에서 토큰 값 앱 측을 추적하셨습니까? logoutAction (Request $ request) –
토큰에 관한 것입니다. 결과에서 Token은 null입니다.'result.getData(). getToken()'은 null입니다. 그러나'response.body' 결과를 보여줍니다. –