输入用户名和密码后,我便能够正确进行身份验证并获得有效的令牌,然后打算存储此令牌,因此回头用户不必再次输入用户名和密码。

因此,当用户回来时,我检索令牌并创建一个新的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;
}


谢谢

07-24 22:19