2015-06-12 2 views
2

Я реализую Keycloak для аутентификации пользователя и api и успешно аутентифицирую сервер Keyclaok, но получая ошибку при вызове API.Получение кода состояния 404 и ошибки подключения к сервису при вызове api с использованием Pipe (Aerogear)

Я использую библиотеку аэрограмм и образец проекта для вызова API-интерфейса сервера. https://github.com/aerogear/aerogear-android-pipe

try{ 
AuthzModule authzModule = AuthorizationManager.config("keycloak", OAuth2AuthorizationConfiguration.class) 
       .setBaseURL(new URL("URL:8080/auth")) 
       .setAuthzEndpoint("/realms/appname/tokens/login") 
       .setAccessTokenEndpoint("/realms/appname/tokens/access/codes") 
       .setAccountId("keycloak-token") 
       .setClientId("app_id") 
       .setClientSecret("1b9a1376-bc6e-41d2-b3e5-cee754305a1f") 
       .setRedirectURL("Callback") 
       .setScopes(Arrays.asList("user")) 
       .addAdditionalAuthorizationParam((Pair.create("access_type", "confidential"))) 
       .asModule(); 

     authzModule.requestAccess(this, new Callback<String>() { 
      @Override 
      public void onSuccess(String o) { 

       System.out.println("Server Response" + o); 
       retrieveFiles(authzModule); 

      } 

      @Override 
      public void onFailure(Exception e) { 
       Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_LONG).show(); 
      } 

     }); 
     PipeManager.config("GetFile", RestfulPipeConfiguration.class) 
       .withUrl(new URL("Server_URL")) 
       .module(authzModule) 
       .forClass(String.class); 

     Pipe<Object> documentsPipe = PipeManager.getPipe("GetFile", this); 
     documentsPipe.read(new Callback<List<Object>>() { 
      @Override 
      public void onSuccess(final List<Object> fileses) { 
       Toast.makeText(getApplicationContext(), "Success", Toast.LENGTH_LONG).show(); 
      } 

      @Override 
      public void onFailure(Exception e) { 
       Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_LONG).show(); 
      } 
     }); 

    }catch (Exception ex){ 
     Toast.makeText(getApplicationContext(), ex.getMessage(), Toast.LENGTH_LONG).show(); 
    } 

Просьба предложить возможный способ решить эту проблему.

+0

[404] (https://en.wikipedia.org/wiki/HTTP_404) – Selvin

ответ

1
 try{ 
AuthzModule authzModule = AuthorizationManager.config("keycloak", OAuth2AuthorizationConfiguration.class) 
       .setBaseURL(new URL("URL:8080/auth")) 
       .setAuthzEndpoint("/realms/appname/tokens/login") 
       .setAccessTokenEndpoint("/realms/appname/tokens/access/codes") 
       .setAccountId("keycloak-token") 
       .setClientId("app_id") 
       .setClientSecret("1b9a1376-bc6e-41d2-b3e5-cee754305a1f") 
       .setRedirectURL("Callback") 
       .setScopes(Arrays.asList("user")) 
       .addAdditionalAuthorizationParam((Pair.create("access_type", "confidential"))) 
       .asModule(); 

     authzModule.requestAccess(this, new Callback<String>() { 
      @Override 
      public void onSuccess(String o) { 

       System.out.println("Server Response" + o); 
       retrieveFiles(authzModule); 

      } 

      @Override 
      public void onFailure(Exception e) { 
       Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_LONG).show(); 
      } 

     }); 


    }catch (Exception ex){ 
     Toast.makeText(getApplicationContext(), ex.getMessage(), Toast.LENGTH_LONG).show(); 
    } 

Than call simple http request with auth token в header.when сервер отправляет ответ json.

Заголовки: Предъявительские + "аутентификации маркеров", Content-Type: применение/JSON, Accept: применение/JSON

Смежные вопросы