#java #rest #allegro-pl
#java #rest #allegro-pl
Вопрос:
Я пытаюсь написать простое приложение, которое связано с Allegro.pl , но я застрял на авторизации. Я уже потратил слишком много часов, пытаясь разобраться в этом (почтальон не помог), и мне интересно, можете ли вы взглянуть и помочь, пожалуйста?
Согласно документации, все данные должны быть закодированы с помощью Base64 — я также пытался кодировать как String, как byte[], но авторизация все время завершается ошибкой:
{«ошибка»: «Неавторизованный»,»error_description»: «Неавторизованный»}
в документации есть код curl (пожалуйста, не обращайте внимания на другой веб-адрес, так как я работаю в изолированной среде)
curl -X POST
‘https://allegro.pl/auth/oauth/device'
-H ‘Authorization: Basic {base64(client_id:client_secret)}’
-H ‘Content-Type: application/x-www-form-urlencoded’
-d ‘client_id={client_id}’
Пожалуйста, смотрите Ниже мой код
package AllegroAPI;
import kong.unirest.HttpResponse;
import kong.unirest.JsonNode;
import kong.unirest.Unirest;
import org.apache.commons.codec.binary.Base64;
public class App
{
public static void main( String[] args )
{
String clientId = "myClientId";
String clientSecret = "myClientsSecret";
String authString = clientId ":" clientSecret;
// String codedAuthString = Base64.encodeBase64String(authString.getBytes());
byte[] codedAuthString = Base64.encodeBase64(authString.getBytes());
byte[] codedClientId = Base64.encodeBase64(clientId.getBytes());
HttpResponse response = Unirest.post("https://allegro.pl.allegrosandbox.pl/auth/oauth/device")
.header("Authorization", "Basic {base64(" codedAuthString ")}")
.header("Content-Type", "application/x-www-form-urlencoded")
.body("client_id={" clientId "}")
.asString();
System.out.println(response.getBody());
}
Ответ №1:
Я буду стараться изо всех сил, хе-хе. Похоже, ваша базовая аутентификация неверна, попробуйте это:
String codedAuthString = clientId ":" clientSecret;
String authValueBase64 = new String(Base64.encodeBase64(
codedAuthString.getBytes()));
HttpResponse response = Unirest.post("https://allegro.pl.allegrosandbox.pl/auth/oauth/device")
.header("Authorization", "Basic " authValueBase64 )
.header("Content-Type", "application/x-www-form-urlencoded")
.body("client_id={" clientId "}")
.asString();
Дайте мне знать, если это вам поможет
Комментарии:
1. Фигурные скобки в теле также должны быть удалены:
.body("client_id=" clientId)