Авторизуйтесь через LinkedIn, используя Angular 7 и API .net core 2.0. - PullRequest
0 голосов
/ 27 сентября 2019

Я пытаюсь получить адрес электронной почты из ответа после входа в аккаунт связанный.Сначала я делаю запрос на получение от моей угловой части, и он дает мне страницу входа, после успешного входа возвращает мне «код» и «состояние».

 <button class="btn btn-primary" style="background-color: #4875B4;border-color: #4875B4;line-height: 18px;" (click)="getResponse()" >
                       <a href="https://www.linkedin.com/oauth/v2/authorization?response_type=code&client_id=my_id&redirect_uri=my_redirect_URI&state=987654321&scope=r_liteprofile%20r_emailaddress">LinkedIn</a>
                       </button>   

После этогоЯ отправляю этот код ответа => и состояние в API.Теперь дальше от API я делаю еще один вызов для linkedin, чтобы получить «токен».

var httpClient = new HttpClient
            {
                BaseAddress = new Uri("https://www.linkedin.com/")
            };


            var requestUrl = $"oauth/v2/accessToken?grant_type=authorization_code&code={code}&redirect_uri=my-redirect-URI&client_id=my-client-id&client_secret=my-client-secret";


            var requestTask = await httpClient.GetAsync(requestUrl).ConfigureAwait(false);

            var response = Task.Run(() => requestTask); 

, теперь этот ответ снова перенаправляет на тот же угловой адрес.Но результат передается в API, теперь снова выполняется третий запрос от API для получения электронного письма.

var apiClient = new HttpClient
            {
                BaseAddress = new Uri("https://api.linkedin.com")
            };
            //var url = $"/v2/me/?projection=(firstName)?requestToken?scope=r_liteprofile?oauth2_access_token={token}&format=json";
            var url = $"/v2/emailAddress?q=members&projection=(elements*(handle~))&oauth2_access_token={token}";
            var requestTask = await apiClient.GetAsync(url).ConfigureAwait(false);
            //var response = await apiClient.GetAsync(url);
            var response = Task.Run(() => requestTask);
            var jsonResponse = await response.Result.Content.ReadAsStringAsync();

После этого результата я получаю электронное письмо.но проблема в том, что при втором вызове на сервер connectedIn угловая часть пропускает трассу, с которой я вызывал API, а также после второго запроса выдает ошибку The error

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...