2015-11-07 3 views
1

Я использую Модернизацию (а не новую) в Android, чтобы выполнить авторизацию OAuth. Я мимо первого шага, когда я получаю код, чтобы использовать, теперь следующая вещь в спецификации, чтобы сделать это:CURL -u запрос с дооснащением

curl -u : http://example.com/admin/oauth/token -d 'grant_type=authorization_code&code=' 

Я никогда не делали локон запросы, я не знаю, что делать, особенно с Retrofit и его интерфейсами.

я смотрел на эту

How to make a CURL request with retrofit?

, но этот парень оленья кожа Have A -D вещь

ответ

2

-d аргумент свернуться добавляет параметры POST. В этом случае grant_type и code. Мы можем кодировать каждую из них в модификации с аннотацией @Field.

public interface AuthApi { 
    @FormUrlEncoded 
    @POST("/admin/oauth/token") 
    void getImage(@Header("Authorization") String authorization, 
         @Field(("grant_type"))String grantType, 
         @Field("code") String code, 
         Callback<Object> callback); 
} 

Если поле авторизации с помощью @Header решения дать на связанный вопрос.

Usage бы как -

RestAdapter authAdapter = new RestAdapter.Builder().setEndpoint("http://example.com/").build(); 
AuthApi authApi = authAdapter.create(AuthApi.class); 

try { 
    final String auth = "Basic " + getBase64String(":"); 
    authApi.getImage(auth, "authorization_code", "", new Callback<Object>() { 
     @Override 
     public void success(Object o, Response response) { 
      // handle success 
     } 

     @Override 
     public void failure(RetrofitError error) { 
      // handle failure 
     } 
    }); 
} catch (UnsupportedEncodingException e) { 
    e.printStackTrace(); 
} 

где getBase64String является вспомогательным методом из вашего связанного ответа. Код скопирован по завершению -

public static String getBase64String(String value) throws UnsupportedEncodingException { 
    return Base64.encodeToString(value.getBytes("UTF-8"), Base64.NO_WRAP); 
} 
+0

Огромное спасибо! –

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