SoundCloud官方Java ApiWrapper,带有保存令牌的请求被401拒绝

时间:2013-05-20 22:33:45

标签: java android api soundcloud

当我输入用户名和密码时,我能够正确验证并获得有效的令牌,然后我打算存储此令牌,以便返回的用户不必再次输入用户名和密码。

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

任何提示或示例都将受到高度赞赏,

提前致谢。

1 个答案:

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

由于