TTrack_Android – Logowanie

communication

Witaj, w projekcie konkursowym zrobiłem ostatnio logowanie do androidowej aplikacji.

 
 
 
 
 
 

Logowanie

 

Były małe przerwy w projekcie i wiele rzeczy zostało na ostatnią chwilę ale jedziemy dalej:). Pokażę Ci dzisiaj jak z pomocą Retrofita możesz zrobić logowanie do swojej aplikacji. Opieram moją aplikację o wzorzec MVP znalazłem nawet fajny przykład od którego można zacząć budować własną o tutaj:).  Jeżeli nie kojarzysz wzorca o którym piszę możesz zajrzeć do jednego z poprzednich wpisów. Skonfigurujmy najpierw retrofita dodajmy klasę ApiClient.

 

public class ApiClient {

    public static Retrofit retrofit = null;
    private static String baseUrl = "service_url";

    public static Retrofit login(final String username, final String password) {

        OkHttpClient client = new OkHttpClient().newBuilder().addInterceptor(new Interceptor() {

            @Override
            public okhttp3.Response intercept(Chain chain) throws IOException {
                Request originalRequest = chain.request();

                Request.Builder builder = originalRequest.newBuilder().header("Authorization",
                        Credentials.basic(username, password));

                Request newRequest = builder.build();
                return chain.proceed(newRequest);

            }

        }).connectTimeout(20, TimeUnit.SECONDS)
                .readTimeout(30, TimeUnit.SECONDS)
                .build();

        retrofit = new Retrofit.Builder()
                .baseUrl(baseUrl)
                .addConverterFactory(GsonConverterFactory.create())
                .client(client)
                .build();

        return retrofit;
    }
}

 

A następnie ustawiamy “end pointy” czyli konkretne adresy od których chcemy się coś dowiedzieć:).

 

public interface ITTrackService {

    @GET("login/{employerSsoId}")
    Call<Employer> getEmployer(@Path("employerSsoId") String employer);

    @GET("task/all/employer")
    Call<List<Task>> getTasks(@Path("employer") String employer);
}

 
Następnie w klasie LoginInteractorImpl w metodzie login wywołujemy nasze kody:

 

@Override
    public void login(final String username, final String password, final OnLoginFinishedListener listener) {

        new Handler().post(new Runnable() {
            @Override
            public void run() {
                boolean error = false;
                if (TextUtils.isEmpty(username)) {
                    listener.onUsernameError();
                    error = true;
                    return;
                }
                if (TextUtils.isEmpty(password)) {
                    listener.onPasswordError();
                    error = true;
                    return;
                }
                if (!error) {

                    ApiClient.login(username, password);

                    ITTrackService apiService =
                            ApiClient.retrofit.create(ITTrackService.class);

                    Call<Employer> call = apiService.getEmployer(username);
                    call.enqueue(new Callback<Employer>() {
                        @Override
                        public void onResponse(Call<Employer> call, Response<Employer> response) {
                            if (response.isSuccessful())
                                listener.onSuccess(response.body());
                            else
                                listener.onWrongCredentialsError();
                        }

                        @Override
                        public void onFailure(Call<Employer> call, Throwable t) {
                            listener.onConnectionError();
                        }
                    });
                }
            }
        });
    }

 

Jeśli masz ochotę możesz przeanalizować ten przykład tutaj:).

Cześć:).

 

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *