通过共享首选项Android保存access_token

时间:2018-07-30 14:41:38

标签: android sharedpreferences access-token

我的应用程序从服务器获取了一些响应,并且在该响应中我还收到了访问令牌,我必须在以后的操作中使用该访问令牌,通常我设法从响应中获取了此令牌,现在我可以在textView中看到它。但是无论如何,我必须创建诸如刷新以下令牌之类的东西,因为我认为在当前令牌到期后,我的用户不会很高兴多次登录我的应用程序。所以现在我有一个非常严重的问题,例如如何插入以下令牌,该令牌可以从响应中获取到我的请求中:

@Headers({"Content-type: application/json",
        "Authorization: Bearer my token"})
@GET("/v1/message/list")
Call<ListOfMess> getInMess(@Query("type") int type, @Query("offset") int offset);

现在我必须每半小时插入最后一个令牌,因为我将无法获取任何数据。我尝试将以下令牌插入到我的改造初始化中:

Retrofit retrofit = new Retrofit.Builder()
                .baseUrl("https://server/")
                .client(client)
                .addConverterFactory(GsonConverterFactory.create())
                .build();

但是它不能正常工作。因此,一段时间后,我知道可以通过sharedpreferences存储以下令牌,而不是将其插入到各处,但是我不知道如何创建它。我希望您能帮助mw解决以下问题。另外,如果您知道一段时间后通过某些请求刷新我的令牌的方法,我将很高兴看到您的回答)) 对不起,我的语言能力很差。

1 个答案:

答案 0 :(得分:1)

    //Save token here
    String token = "Some token From Server";
    SharedPreferences preferences = getActivity().getSharedPreferences("MY_APP",Context.MODE_PRIVATE);
    preferences.edit().putString("TOKEN",token).apply();


    //Retrieve token wherever necessary
    SharedPreferences preferences = getActivity().getSharedPreferences("MY_APP",Context.MODE_PRIVATE);
    String retrivedToken  = preferences.getString("TOKEN",null);//second parameter default value.