0

当我输入用户名和密码时,我能够正确地进行身份验证并获得一个有效的令牌,然后我打算存储这个令牌,这样返回的用户就不必再次输入用户名和密码。

因此,当用户回来时,我检索令牌并创建 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。

任何提示或示例将不胜感激,

提前致谢。

4

1 回答 1

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;
}

谢谢

于 2013-05-22T15:59:06.850 回答