android - 通过共享首选项 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解决以下问题。而且,如果您知道在一段时间后通过某些请求刷新我的令牌的方式,我会很高兴看到您的回答))对不起我的语言技能不好。
解决方案
//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.
推荐阅读
- r - 导入数据并添加特定于不同文件源的 ID
- sql - Hive SQL 计数项目,如果它等于 1,则说明使用了什么项目
- ajax - C#控制器中的AJAX发布数据为空
- javascript - 在Javascript中使用多个innerHTML分隔标签
- python - 对包含 2 个独立变量和 1 个因变量的数据集进行切片。我想分别使用自变量访问数据
- pygame - Pygame npc 角色的动作没有在屏幕上闪烁,同时也滞后于游戏
- python-3.x - Matplotlib 绕线改变比例?
- flutter - 在轴 Mpchart Flutter 上实现刻度线
- android - MVVM xamarin android多次调用http
- javascript - 如何通过 Remix 将 Dapp 连接到 Metamask 并与部署在 Ropsten 上的智能合约进行交互