Нажав на запрос http, вы получите ошибку в коде 2 - PullRequest
0 голосов
/ 05 сентября 2018

Я делаю регистрацию с помощью linkedin и мне нужно получить код доступа и базовые данные профиля. Но когда я отправляю запрос, я получаю сообщение об ошибке CORS в своей консоли, когда я нажимаю URL-адрес прямо в браузере, он корректно переводит меня на страницу входа. В чем проблема при попадании в запрос?

Исправлена ​​ошибка CORS:

Я обнаружил, что localhost: 4200 не имеет '/', и после его включения ошибка CORS была устранена, но при попытке получить доступ к моему http.get возникла проблема. компонент:

  import { Injectable } from '@angular/core';
    import {Http} from '@angular/http';
    import {Observable} from 'rxjs';
    import {map} from 'rxjs/operators'
    import { mapToExpression } from '../../../node_modules/@angular/compiler/src/render3/view/util';
    @Injectable({
      providedIn: 'root'
    })
    export class LinkedInService {

      constructor(private http:Http) {
        console.log("In Linked in constructor");
       }

       public linkedInSignIn(){
          console.log ("Linked in Sign in");
          let authURL ="https://www.linkedin.com/oauth/v2/authorization?"+// "https://www.linkedin.com/uas/oauth2/authorization?"+
          "response_type=code"+
          "&client_id=781872"+
          "&state=xys"+
          "&redirect_uri=http://localhost:4200/";
          console.log("auth rul" +authURL);
          this.http.get(authURL).pipe(map(res => res.json()))
          .subscribe((res:Response)=>{
            console.log("Http Get " + res);
          });//people => this.people = people);
       }    

      public linkedInSignOut(){

       }
    }

enter image description here

1 Ответ

0 голосов
/ 05 сентября 2018

РЕДАКТИРОВАТЬ:

Вам не требуется map ваш объект ответа от http.get(). Это автоматически делается новым angular6 http.

Так и должно быть:

this.http.get(authURL).subscribe((res:any)=> {console.log("Http Get " + res); });

Оригинальный ответ, связанный с CORS:

Как предлагается в этом ответе , попробуйте вызвать linkedIn api из API вашего бэкэнда, а не напрямую из браузера. Это решит вашу Cross origin связанную проблему.

Linkedin напрямую не позволит третьему приложению выполнить его api. Он должен быть из вашего бэкэнда api, а не из браузера.

...