首页 > 解决方案 > 通过共享首选项 android 保存 access_token

问题描述

我的应用程序从服务器获得了一些响应,并且在该响应中我还收到了访问令牌,我必须在我的进一步操作中使用它,通常我设法从我的响应中获取这个令牌,现在我可以在 textView 中看到它。但无论如何,我必须像刷新以下令牌一样创建 smth,因为我认为在当前令牌过期后,我的用户不会很乐意多次登录我的应用程序。所以现在我有一个非常严重的问题,比如如何插入以下令牌,我可以从我的回复中得到我的请求:

@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解决以下问题。而且,如果您知道在一段时间后通过某些请求刷新我的令牌的方式,我会很高兴看到您的回答))对不起我的语言技能不好。

标签: androidsharedpreferencesaccess-token

解决方案


    //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.

推荐阅读