Мы пытаемся соединиться с пользовательским API другой компании, который использует двуногий OAuth для аутентификации запроса и отправки нам ответа.
В данный момент код, который мы имеем, отправляет запрос, но он не проходит проверку подлинности на другом конце и, следовательно, отправляет НЕСАНКЦИОНИРОВАННЫЙ ответ.
Шаги, которые мы исследовали до сих пор:
- Подключено к удаленному сайту с помощью реализации OAuth в python с использованием таких же учетных данных .
- Попросил другую компанию сравнить наш OAuth-запрос с другим, которому удалось выяснить, отсутствует ли что-либо в нашем.
После второго пункта выше единственное отличие нашего запроса от другого рабочего запроса состоит в том, что параметр oauth_token
присутствует в нашем запросе, а не в других. Кроме того, он сказал, что у них есть oauth_body_hash_value
в большинстве их запросов, но их нет в наших - хотя они и получают рабочие запросы без него.
Есть ли способ удалить параметр oauth_token
в Scribe? Или, всегда ли нужен oauth_body_hash_value
? Может ли запрос работать без?
Я включил приведенный ниже код, я совершенно новичок в OAuth, поэтому, пожалуйста, не стесняйтесь сообщать мне, если что-то не так.
Обратите внимание, что TestAPI.class расширяет DefaultAPI10a и просто возвращает "" для всех трех обязательных методов.
public class TestImporter {
private static final String REQ_URL = "http://test.com/";
private static final String KEY = "KEY";
private static final String SECRET = "SECRET";
// test variables
private static final String VAR1 = "Test123";
public static void main(String[] args) {
OAuthService service = new ServiceBuilder()
.provider(TestAPI.class)
.apiKey(KEY)
.apiSecret(SECRET)
.build();
Token token = new Token("", "");
OAuthRequest request = new OAuthRequest(Verb.GET, REQ_URL + VAR1 + "/");
service.signRequest(token, request);
Response response = request.send();
System.out.println(response.getBody());
}
}