Подключение к API с использованием базовой аутентификации Angular 8 Express js - PullRequest
0 голосов
/ 19 сентября 2019

Я установил приложение angular 8, которое подключается к Express API.

Я запускаю его локально, чтобы протестировать.Мое внешнее приложение подключается к http://localhost:4200/, а внутреннее к http://localhost:3000/ Я настроил экспресс-маршрут для подключения к https://api.podbean.com/v1/podcasts?access_token=baee9cb65384a814e704adc626dc969bb019f84d, который работает нормально, возвращая все подкасты

Но конечная точка debugToken никогда не работает через экспресс-маршрут, если я использую https://api.podbean.com/v1/oauth/debugToken?access_token=baee9cb65384a814e704adc626dc969bb019f84d Использование почтальона с базовым auth clientId = '7faf9a7ad38a01c7d900c' client_secret = 'a7a3825f02be39c57ff44' работает нормально, но никогда при подключении через localhost я используюGET

Это должно быть соединение, потому что я получаю возвращенный объект, хотя это ошибка

In Angular:

debug() {
    const httpOptions = {
      headers: new HttpHeaders({
        'Content-Type':  'application/json',
        Authorization: 'Basic ' + btoa('7faf9a7ad38a01c7d900c:a7a3825f02be39c57ff44')
      })
    };
    console.log(httpOptions);
    return this.http.get(`${this.configUrl}/debug/`, httpOptions);
  }

Express:

  router.get('/debug', function (req, res, next) {
    var options = {
      url: `https://api.podbean.com/v1/oauth/debugToken?access_token=${accessToken}`
    }
     request(options, function (err, response, body) {
        console.log( req.headers);
       if(err){
         return res.status(500).json({
           title: 'An error has occured',
           error: err
         })
       }
            res.json(JSON.parse(body));
           next();
      })

  });

Когда я регистрирую заголовки запросов на стороне экспресс / узла

{host: 'localhost:3000',
  connection: 'keep-alive',
  pragma: 'no-cache',
  'cache-control': 'no-cache',
  'sec-fetch-mode': 'cors',
  origin: 'http://localhost:4200',
  authorization: 'Basic N2ZhZjlhN2FkMzhhMDFjN2Q5MDBjOmE3YTM4MjVmMDJiZTM5YzU3ZmY0NA==',
  'content-type': 'application/json',
  accept: 'application/json, text/plain, */*',
  'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36',
  dnt: '1',
  'sec-fetch-site': 'same-site',
  referer: 'http://localhost:4200/',
  'accept-encoding': 'gzip, deflate, br',
  'accept-language': 'en-GB,en;q=0.9,en-US;q=0.8,it;q=0.7,es;q=0.6' }

Возвращаемый объект:

{"error":"invalid_token","error_description":""}

Что говорит мне, что я подключаюсь, просто не правильно

1 Ответ

1 голос
/ 20 сентября 2019

Похоже, вы просто запутали конечные точки.Вы отправляете базовую аутентификацию со страницы Angular на конечную точку Express, что не имеет особого смысла, потому что https://api.podbean.com требует авторизации, а не ваш сервер Express.

Попробуйте добавить базовые учетные данные для аутентификации взапрос, отправляемый с вашего сервера Express на api.podbean.com

  router.get('/debug', function (req, res, next) {
    var options = {
      url: `https://api.podbean.com/v1/oauth/debugToken?access_token=${accessToken}`,
      headers: {               
         'Authorization': 'Basic ' + new Buffer("7faf9a7ad38a01c7d900c:a7a3825f02be39c57ff44").toString('base64')
      }
    }
    request(options, function (err, response, body) {
      ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...