私のアプリからログアウトする必要があります。AndroidでRetrofitを使用してログアウト
これは私のphp
スクリプトです:
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);
}
これはPOST
パラメータを使用して、API呼び出しです:
@POST("api/logout/")
Call<ApiResponse> logOutUser(@Query("token") String token);
私はログアウト用のボタンがあります。
E/SettingsActivity: logOutMethod one: f7177163c833dff4b38fc8d2872f1ec658940cbf280ce
E/SettingsActivity: logOutMethod two: [email protected]8
しかし、一部では:デバッグした後
@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);
}
ApiResponse result = response.body();
方法response.body()
例外:
data = null
msg = "Missing required parameter"
status = "fail"
そして、私のアプリでもSnackBar
をスローしますメッセージMissing required parameter
とアプリはログアウトしません。
POSTメソッドを使用してログアウトするにはどうすればよいですか?ここで何ができますか?
ああ、私もそうだと思います。ログアウトのためのログインユーザのトークンを設定するためのアイデアはありますか? –
サーバ上のスクリプトのトークン値のアプリ側も同様にトレースしました 'logoutAction(Request $ request)' –
トークンに関するすべてです。トークンは結果としてnullです。 'result.getData()。getToken()'はnullになります。しかし、 'response.body'は結果を表示します。 –