我正在尝试了解 Android AccountManager 和 OAuth。我想做的是不让手机访问密码。(这就是谷歌的建议:“对安全要聪明! ”)所以我检查了谷歌示例应用程序SampleSyncAdapter并开始阅读代码。然后我在 AuthenticatorActivity 中看到了这种情况:
private AccountManager mAccountManager;
private String mPassword;
/**
* ... Sets the
* AccountAuthenticatorResult which is sent back to the caller. We store the
* authToken that's returned from the server as the 'password' for this
* account - so we're never storing the user's actual password locally.
*
* @param result the confirmCredentials result.
*/
public void handleLogin(View view) {
....
mPassword = mPasswordEdit.getText().toString();
....
Log.d(TAG, "mPassword set to Account:" + mAccountManager.getPassword(account));
}
private void finishLogin(String authToken) {
....
mAccountManager.addAccountExplicitly(account, mPassword, null);
....
}
此日志消息是“mPassword 设置为 Account:test”。当您阅读其余部分时,这在某种程度上是可以理解的,因为
protected String doInBackground(Void... params) {
....
return NetworkUtilities.authenticate(mUsername, mPassword);
....
}
如果密码是令牌,这将不起作用。
此外,我希望其余代码在 getAuthToken() 上的 Authenticator 中以不同方式工作验证我的 JSON RESTful 服务。
任何人都可以对此有所了解吗?