Я пытаюсь создать правильный запрос для Twitter-токена авторизации только для приложений, используя запрос POST-запроса, но я продолжаю получать ответ Http 400 (Bad Request).Получение токена авторизации Twitter с запросом POST Volley
Это то, что я пробовал:
URL
private static final String TWITTER_API_AUTH_URL = "https://api.twitter.com/oauth2/token";
Кодирование ключ потребителя и секрет потребителя
try {
byte[] data = (URLEncoder.encode(TWITTER_CONSUMER_KEY, "UTF-8") + ":" + URLEncoder.encode(TWITTER_CONSUMER_SECRET, "UTF-8")).getBytes("UTF-8");
mEncodedKeyAndSecret = Base64.encodeToString(data, Base64.DEFAULT);
} catch (UnsupportedEncodingException e) {
//handleError
}
Пользовательские Volley StringRequest
private class TokenRequestWithAuthHeader extends StringRequest{
public TokenRequestWithAuthHeader (int method, String url, Response.Listener listener, Response.ErrorListener errorListener)
{
super(method, url, listener, errorListener);
}
@Override
public Map getHeaders() throws AuthFailureError {
Map headers = new HashMap();
headers.put("Content-Length", String.valueOf(getBody().length));
headers.put("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
headers.put("Authorization", "Basic " + mEncodedKeyAndSecret);
return headers;
}
@Override
public byte[] getBody() {
return ("grant_type=client_credentials").getBytes();
}
}
Отправка запроса
tokenRequest = new TokenRequestWithAuthHeader
(Request.Method.POST, TWITTER_API_AUTH_URL, mCallback.getTokenResponseListener(), mCallback);
requestQueue.add(tokenRequest);
Documentation about Application-Only authentication at dev.twitter.com
Я также попытался расширение JsonObjectRequest
и JsonRequest
вместо StringRequest
, тот же самый результат.
Может кто-то помочь определить, в чем проблема с запросом?
Вы получили успешный ответ при использовании некоторых инструментов, таких как почтальон? – BNK
Я сгенерировал запрос на www.hurl.it с закодированным основным заголовком проверки подлинности, который я распечатал в LogCat, после его создания из того же кода, который я использовал выше, используя тот же заголовок типа контента и получил ожидаемый ответ успеха 200. Я довольно озадачен :) – 2Dee
Если только для тестирования или обучения, можете ли вы опубликовать TWITTER_CONSUMER_KEY и TWITTER_CONSUMER_SECRET или закодированный заголовок базовой аутентификации, чтобы мы могли проверить? – BNK