我正在使用volley库为我的android任务实现rest API,我想知道如何保存令牌,因为每个其他API都需要访问和刷新令牌,我应该将其保存在数据库中吗?调用其他API时如何访问存储的令牌?
这是我的webApi课程
public void login(String email, String password, final APIListener listener) {
String url = BASE_URL + "/oauth/token";
JSONObject jsonObject = new JSONObject();
try {
JSONObject userJSON = new JSONObject();
userJSON.put("email",email);
userJSON.put("password", password);
jsonObject.put("user",userJSON);
jsonObject.put("grant_type", "password");
Log.d("Json Object", jsonObject.toString());
Response.Listener<JSONObject> successListener = new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try{
Log.d("th response",response.toString());
Gson obj = new Gson();
Authentication authObj = obj.fromJson(response.toString(), Authentication.class);
Log.d("successObj",authObj.getSuccess());
listener.onLogin(authObj);
}
catch(Exception ex){
Log.e("Volley onResponse Error",ex.toString());
Toast.makeText(mApplication, "JSON exception", Toast.LENGTH_LONG).show();
}
}
};
Response.ErrorListener errorListener = new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e("Json Error Response",error.toString());
Toast.makeText(mApplication, "Invalid Login", Toast.LENGTH_LONG).show();
}
};
JsonObjectRequest request = new JsonObjectRequest(Request.Method.POST, url, jsonObject, successListener, errorListener);
mRequestQueue.add(request);
}
catch (JSONException exception){
Log.e("Login exception",exception.getStackTrace().toString());
Toast.makeText(mApplication, "JSON Exception", Toast.LENGTH_LONG).show();
}
}
这是活动课
//login
EditText emailField = findViewById(R.id.email);
EditText passwordField = findViewById(R.id.password);
Button loginBtn = findViewById(R.id.LoginBtn);
loginBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String email = emailField.getText().toString();
String password = passwordField.getText().toString();
final Model model = Model.getInstance(LoginActivity.this.getApplication());
model.login(email, password, new AbstractAPIListener() {
@Override
public void onLogin(Authentication authentication){
if(authentication.getSuccess().equals("true")) {
model.setAuth(authentication);
Toast.makeText(LoginActivity.this, "Login success!", Toast.LENGTH_LONG).show();
Intent intent = new Intent(LoginActivity.this, HomeActivity.class);
startActivity(intent);
}
else{
Toast.makeText(LoginActivity.this, "Invalid Login!", Toast.LENGTH_LONG).show();
}
}
});
}
});
2条答案
按热度按时间syqv5f0l1#
您可以将访问令牌储存在“共享”偏好设置中
nsc4cvqm2#
Auth0提供了一个实用程序类来存储令牌。最好使用该实用程序库。有两个类可用于管理凭据:
1.凭据管理器以纯文本形式存储数据
文档链接:Auth0.Android Save and Renew Tokens