Проблема с авторизацией Java REST api

#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)