如何在 android studio 中存储访问令牌和刷新令牌?

How to store the access token and refresh token in android studio?

我正在为我的 android 任务使用 volley 库实现休息 API,我想知道如何保存令牌,因为每个其他 API 都需要访问和刷新令牌,我应该把它保存在数据库中吗?调用其他 API 时如何访问存储的令牌?

这是我的 webApi class,

 public void login(String email, String password, final APIListener listener) {
      String url = BASE_URL + "/oauth/token";
      JSONObject jsonObject = new JSONObject();

      try {
           JSONObject userJSON = new JSONObject();
           userJSON.put("email",email);
           userJSON.put("password", password);
           jsonObject.put("user",userJSON);
           jsonObject.put("grant_type", "password");

           Log.d("Json Object", jsonObject.toString());

           Response.Listener<JSONObject> successListener = new Response.Listener<JSONObject>() {

                @Override
                public void onResponse(JSONObject response) {
                     try{
                          Log.d("th response",response.toString());

                         

                          Gson obj = new Gson();
                          Authentication authObj = obj.fromJson(response.toString(), Authentication.class);
                          Log.d("successObj",authObj.getSuccess());

                          listener.onLogin(authObj);
                     }
                     catch(Exception ex){
                          Log.e("Volley onResponse Error",ex.toString());
                          Toast.makeText(mApplication, "JSON exception", Toast.LENGTH_LONG).show();
                     }

                }
           };

           Response.ErrorListener errorListener = new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                     Log.e("Json Error Response",error.toString());
                     Toast.makeText(mApplication, "Invalid Login", Toast.LENGTH_LONG).show();

                }
           };

           JsonObjectRequest request = new JsonObjectRequest(Request.Method.POST, url, jsonObject, successListener, errorListener);




           mRequestQueue.add(request);
      }
      catch (JSONException exception){
           Log.e("Login exception",exception.getStackTrace().toString());
           Toast.makeText(mApplication, "JSON Exception", Toast.LENGTH_LONG).show();

      }


 }

这是activityclass,

 //login
    EditText emailField = findViewById(R.id.email);
    EditText passwordField = findViewById(R.id.password);
    Button loginBtn = findViewById(R.id.LoginBtn);

    loginBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String email = emailField.getText().toString();
            String password = passwordField.getText().toString();

            final Model model = Model.getInstance(LoginActivity.this.getApplication());
            model.login(email, password, new AbstractAPIListener() {
                @Override
                public void onLogin(Authentication authentication){
               
                    if(authentication.getSuccess().equals("true")) {
                        model.setAuth(authentication);
                        Toast.makeText(LoginActivity.this, "Login success!", Toast.LENGTH_LONG).show();

                        Intent intent = new Intent(LoginActivity.this, HomeActivity.class);
                        startActivity(intent);
                    }
                    else{
                        Toast.makeText(LoginActivity.this, "Invalid Login!", Toast.LENGTH_LONG).show();
                    }
                }
            });
        }
    });

您可以将访问令牌存储在共享首选项中

 public static String gettitledecreption(Context context, String Key_name) {
    return PreferenceManager.getDefaultSharedPreferences(context).getString(Key_name, "");
}

public static void settitledecreption(Context context, String username ,String key_name) {
    SharedPreferences _sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
    SharedPreferences.Editor editor = _sharedPreferences.edit();
    editor.putString(key_name, username);
    editor.commit();
}