当我输入用户名和密码时,我能够正确验证并获得有效的令牌,然后我打算存储此令牌,以便返回的用户不必再次输入用户名和密码。
因此,当用户回来时,我检索令牌并创建一个新的ApiWrapper实例,将令牌作为参数传递,当我发出请求时,它不能与“401 Unauthorized”一起使用。
很明显,我在某处做错了什么,但我卡住了,我似乎无法在这里找到问题。我将令牌存储为字符串:
private void storeAccessToken(Token token) {
SharedPreferences settings = getSharedPreferences(Constants.PREFS_SOUNDCLOUD_NAME, MODE_PRIVATE);
SharedPreferences.Editor editor = settings.edit();
editor.putString("accessTokenToken", token.toString());
editor.commit();
}
然后当我检索它时,我这样做:
private Token getAccessToken() {
SharedPreferences settings = getSharedPreferences(Constants.PREFS_SOUNDCLOUD_NAME, MODE_PRIVATE);
String token = settings.getString("accessTokenToken", "");
if (token!=null && !"".equals(token)){
return new Token(token, "refresh_token");
}
return null;
}
我从ApiWrapper实例中检索令牌,它不是NULL。
任何提示或示例都将受到高度赞赏,
提前致谢。
答案 0 :(得分:1)
好的,我终于找到了问题。我存储令牌的方式是错误的。方法Token.toString(),它实际上用于记录目的,而不是其他任何东西。
这就是我现在存储和检索令牌的方式:
private void storeAccessToken(Token token) {
SharedPreferences settings = getSharedPreferences(Constants.PREFS_SOUNDCLOUD_NAME, MODE_PRIVATE);
SharedPreferences.Editor editor = settings.edit();
editor.putString("access", token.access);
editor.putString("refresh", token.refresh);
editor.commit();
}
private Token getAccessToken() {
SharedPreferences settings = getSharedPreferences(Constants.PREFS_SOUNDCLOUD_NAME, MODE_PRIVATE);
String access = settings.getString("access", "");
String refresh = settings.getString("refresh", "");
if (access!=null && refresh!=null && !"".equals(access) && !"".equals(refresh)){
return new Token(access, refresh);
}
return null;
}
由于