我有一个 LoginActivity,它获取用户名和密码。我正在尝试使用 POST Retrofit 2 和 OkHTTP 接收身份验证令牌。我创建了构建改造适配器的服务,以及 OkHttp 客户端。我有一个界面,但这是我的问题开始的地方。
我必须在 FormEncodedURL 中将我的凭据(登录时的用户名和密码)发布到后端以接收令牌,我有一个称为 AccessToken 的 POJO。我真的不确定我是否使用回调方法等正确执行此操作。
请让我知道是否还有其他需要帮助我完成这篇文章,因为我对 android 开发和堆叠还比较陌生。
我的 POST 调用如下所示:
@POST("token")
Call<AccessToken> getAuthToken(@Body User user);
用户模型在哪里:
public class User {
@SerializedName("password")
String password;
@SerializedName("username")
String email;
String grantType;
public User(String email, String password, String grantType ) {
this.email = email;
this.password = password;
this.grantType = grantType;
}}
AccessToken 模型是:
public class AccessToken {
private String accessToken;
private String tokenType;
private Integer expiresIn;
private String name;
private String title;
private String picImageBase64String;
private String Issued;
private String Expires;
private Map<String, Object> additionalProperties = new HashMap<String, Object>();
public String getAccessToken() {
return accessToken;
}
public void setAccessToken(String accessToken) {
this.accessToken = accessToken;
}
public String getTokenType() {
return tokenType;
}
public void setTokenType(String tokenType) {
this.tokenType = tokenType;
}
public Integer getExpiresIn() {
return expiresIn;
}
public void setExpiresIn(Integer expiresIn) {
this.expiresIn = expiresIn;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getPicImageBase64String() {
return picImageBase64String;
}
public void setPicImageBase64String(String picImageBase64String) {
this.picImageBase64String = picImageBase64String;
}
public String getIssued() {
return Issued;
}
public void setIssued(String Issued) {
this.Issued = Issued;
}
public String getExpires() {
return Expires;
}
public void setExpires(String Expires) {
this.Expires = Expires;
}
public Map<String, Object> getAdditionalProperties() {
return this.additionalProperties;
}
public void setAdditionalProperty(String name, Object value) {
this.additionalProperties.put(name, value);
}
这是 LoginActivity 中的逻辑
public void login() {
Log.d(TAG, "Login");
if (!validate()) {
onLoginFailed();
return;
}
_loginButton.setEnabled(false);
final ProgressDialog progressDialog = new ProgressDialog(LoginActivity.this,
R.style.AppTheme);
progressDialog.setIndeterminate(true);
progressDialog.setMessage("Authenticating...");
progressDialog.show();
String email = _emailText.getText().toString();
String password = _passwordText.getText().toString();
String grantType = "grant_type=password";
User user = new User(email, password, grantType);
Call<AccessToken> call = figgApiService.getAuthToken(user);
call.enqueue(new Callback<AccessToken>() {
@Override
public void onResponse(Call<AccessToken> call, Response<AccessToken> response) {
int statusCode = response.code();
AccessToken accesstoken = response.body();
}
@Override
public void onFailure(Call<AccessToken> call, Throwable t) {
}
});