输入用户名和密码后,我便能够正确进行身份验证并获得有效的令牌,然后打算存储此令牌,因此回头用户不必再次输入用户名和密码。
因此,当用户回来时,我检索令牌并创建一个新的ApiWrapper实例,将令牌作为参数传递,当我发出请求时,它不适用于“ 401未经授权”。
很明显,我在某处做错了什么,但是我被困住了,我似乎在这里找不到问题。
我将令牌存储为字符串:
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。
任何提示或示例将不胜感激,
提前致谢。
最佳答案
好的,我终于找到了问题。我存储令牌的方式是错误的。方法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;
}
谢谢