Хранение токена авторизации в SharedPreferences
Вот файл, где я пишу save и get , но до этого я делал это для юзера, сейчас написал save для Data, подскажите правильно ли я сохранил, и как мне теперь написать get, чтоб в файле api отправить запрос в таком формате, чтоб вместо {{token}} вставлялся мой сохраненной токен.
@GET("users?token={{token}}")
Call<UsersResponse>getData();
}
package com.example.diplomprogect.storage;
import android.content.Context; import android.content.SharedPreferences;
import com.example.diplomprogect.models.Data; import com.example.diplomprogect.models.User;
public class SharedPrefManager {
private static final String SHARED_PREF_NAME ="my_shared_preff";
private static SharedPrefManager mInstance;
private Context mCtx;
private SharedPrefManager(Context mCtx){
this.mCtx = mCtx;
}
public static synchronized SharedPrefManager getInstance(Context mCtx){
if (mInstance == null){
mInstance = new SharedPrefManager(mCtx);
}
return mInstance;
}
public void saveUser(User user){
SharedPreferences sharedPreferences = mCtx.getSharedPreferences(SHARED_PREF_NAME, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putInt("id", user.getId());
editor.putString("login", user.getLogin());
editor.putString("NickName", user.getNickname());
editor.apply();
}
**public void saveData(Data data){
SharedPreferences sharedPreferences = mCtx.getSharedPreferences(SHARED_PREF_NAME, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("token", data.getToken());
editor.apply();
}**
public boolean isLoggedIn(){
SharedPreferences sharedPreferences = mCtx.getSharedPreferences(SHARED_PREF_NAME, Context.MODE_PRIVATE);
return sharedPreferences.getInt("id", -1) != -1;
}
public User getUser(){
SharedPreferences sharedPreferences = mCtx.getSharedPreferences(SHARED_PREF_NAME, Context.MODE_PRIVATE);
return new User(
sharedPreferences.getInt("id", -1),
sharedPreferences.getString("login", null),
sharedPreferences.getString("nickname", null)
);
}
public void clear(){
SharedPreferences sharedPreferences = mCtx.getSharedPreferences(SHARED_PREF_NAME, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.clear();
editor.apply();
}
}
Ответы (1 шт):
Вы получаете токен с сервера. Дальше вы его хотите сохранить как-то. Для этого нужно использовать SharedPreferenes так как это будет наиболее нормальный вариант. Так как вы не выложили код того как вы обращаетесь к серверу и как вытаскиваете токен, то я покажу как сохранить строку в памяти. Для этого вы должны в месте где получаете токен провести запись данных:
SharedPreferences.Editor editor = getSharedPreferences(MY_PREFS_NAME,MODE_PRIVATE).edit();
editor.putString("token", "string_token").apply();
Дальше в месте где вам нужен токен вы должны его вытащить из памяти:
SharedPreferences prefs = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE);
String token= prefs.getString("token", ""); // "" - это значение по-умолчанию если токен не сохранен
