Ich muss mich aus meiner App ausloggen.Logout mit Retrofit in Android
Das ist mein php
Skript:
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);
}
Dies ist api-Aufruf POST
Parameter:
@POST("api/logout/")
Call<ApiResponse> logOutUser(@Query("token") String token);
Ich habe Taste Abmelden.
@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);
}
Nach debug:
E/SettingsActivity: logOutMethod one: f7177163c833dff4b38fc8d2872f1ec658940cbf280ce
E/SettingsActivity: logOutMethod two: [email protected]8
Aber teilweise:
ApiResponse result = response.body();
Verfahren response.body()
wirft:
data = null
msg = "Missing required parameter"
status = "fail"
Und in meiner app wirft auch SnackBar
Nachricht Missing required parameter
und App wird nicht abgemeldet.
Was kann ich für die Abmeldung mit der POST-Methode tun? Was kann hier gemacht werden?
Ahhh, ich denke auch das. Irgendeine Idee, das Token des Login-Benutzers für die Abmeldung einzurichten? –
Haben Sie die Token-Wert App-Seite auch im Skript auf dem Server in der Zeile verfolgen 'logoutAction (Request $ Anfrage)' –
Es geht um Token. Token ist null im Ergebnis: 'result.getData(). GetToken()' ergibt NULL. Aber "response.body" zeigt das Ergebnis an. –