2016-03-24 23 views
0

Kullanıcı adı ve şifremi alan bir LoginActivity var. Bir POST Retrofit 2 ve OkHTTP kullanarak bir kimlik doğrulama jetonu almaya çalışıyorum. Güç adaptörü ve OkHttp istemcisini oluşturan hizmeti yarattım. Bir arayüzüm var ama burası benim sorunumun başladığı yer.Android Giriş Yenileme ile Kimlik Doğrulama

Kimlik bilgimi (giriş adından kullanıcı adı ve parola) bir FormEncodedURL içinde arka uça, AccessToken adı verilen bir POJO'm olduğu belirteci almak için göndermem gerekiyor. Başka bu yazı bana yardımcı ilişkin gerekli bir şey varsa

URL http://xxxxxxxxxxxxxxxx/token/username=smcnary%40metrostudy.com&password=xxxxxx&grant_type=password

gibi bakmak gerekiyor

bana bildirin vb gerçekten geri arama yöntemi ile doğru yapıyorum emin değilim Ben android geliştirme ve yığılmış için oldukça yeni gibi.

Benim POST çağrısı şöyle görünür:

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

Ve AccessToken Modeli ise: İşte

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); 
} 

yılında mantıktır Kullanıcı modelidir

@POST("token") 
Call<AccessToken> getAuthToken(@Body User user); 

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) { 

     } 
    }); 
+0

ve işler hiç düzelmezse orada, o zaman firarına gitti. URL'niz neden şifreyi bu şekilde geçiriyorsa, bunu posta verilerinin bedeninde bulundurmalısınız. – CQM

cevap

0

Bu şekilde arayüzünü değiştirmek gerekir:

@FormUrlEncoded 
@POST("token") 
Call<AccessToken> getAuthToken(@Field("username") String username, @Field("password") String password, @Field("grant_type") String grantType); 

Ve çağrınız böyle olacağını: Sadece denemek için onResponse bir aralık bırakalım

Call<AccessToken> call = figgApiService.getAuthToken(email, password, grantType);