2

我在我的应用程序中使用 Dropbox 核心 Api。当用户在启动时授权应用程序时,会创建一个密钥和一个密钥,允许应用程序与他们的 Dropbox 交互。我通过这样做将这些密钥存储在 SharedPreferences 中:

private void storeKeys(String key, String secret) {
    // Save the access key for later
    SharedPreferences prefs = getSharedPreferences(ACCOUNT_PREFS_NAME, 0);
    Editor edit = prefs.edit();
    edit.putString(ACCESS_KEY_NAME, key);
    edit.putString(ACCESS_SECRET_NAME, secret);
    edit.commit();
    Log.d("DbAuthLog", key);
    Log.d("DbAuthLog", secret);
}

密钥和秘密在日志窗口中显示为 jkhfdsfuyuefd 和 yde767eyshy(当然是为了安全的假密钥)。

现在,当我去取回他们的钥匙时,我正在这样做:

private AccessTokenPair getStoredKeys() { //Need to fix this and test

    SharedPreferences accessKey = getSharedPreferences(ACCESS_KEY_NAME, 0);
    SharedPreferences secretKey = getSharedPreferences(ACCESS_SECRET_NAME, 0);
    System.out.println(accessKey + "--" + secretKey + "from storeKeys");
    return null;

问题是,当我从 getStoredKeys 输出项目时,它们以 --android.app.SharedPreferencesImpl@41201188--android.app.SharedPreferencesImpl@41201928 的形式返回 - 现在与我存储的内容相匹配。我在这里做错了什么?

4

2 回答 2

2

您正在错误地访问您的首选项。

SharedPreferences prefs = getSharedPreferences(ACCOUNT_PREFS_NAME, 0);
String accessKey = prefs.getString(ACCESS_KEY_NAME);
String secretKey = prefs.getString(ACCESS_SECRET_NAME);
于 2013-02-19T14:19:53.287 回答
1

您将这些令牌作为字符串存储在 SharedPreference 中,您需要将它们作为字符串取回。

private AccessTokenPair getStoredKeys() { //Need to fix this and test
SharedPreferences prefs = getSharedPreferences(ACCOUNT_PREFS_NAME, 0);
String accessKey = prefs.getString(ACCESS_KEY_NAME, "");
String secretKey = prefs.getString(ACCESS_SECRET_NAME, "");
System.out.println(accessKey + "--" + secretKey + "from storeKeys");
return null;
于 2013-02-19T14:22:46.357 回答