Хранение токена авторизации в 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 шт):

Автор решения: Andrew

Вы получаете токен с сервера. Дальше вы его хотите сохранить как-то. Для этого нужно использовать 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", ""); // "" - это значение по-умолчанию если токен не сохранен
→ Ссылка