Выполнение запроса к API LinkedIn приводит к 401

Я пытаюсь создать API для профиля пользователей LinkedIn с помощью PHP . Я успешно зарегистрировал свое приложение, и я отметил свой API и секретный ключ, а также перечисляю свой URL-адрес перенаправления.

Пользователь начинает с этой страницы: index.php . Эта страница содержит ссылку на диалоговое окно linkedIn:

 <a href="https://www.linkedin.com/uas/oauth2/authorization?response_type=code&client_id=<?php echo $api_key ?>&state=<?php echo $state ?>&redirect_uri=<?php echo $redirect_uri ?>">Apply Now</a> 

Когда я нажимаю на эту ссылку, я вхожу в LinkedIn, используя мои данные, и я успешно перенаправлен на application_form.php . Отсюда я хотел бы получить информацию о профилях пользователей:

 $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://www.linkedin.com/v1/people/~"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $output = curl_exec($ch); curl_close($ch); var_dump($output); 

Однако приведенный выше код приводит к выводу:

 "401 Unknown authentication scheme" 

Проведя немного исследований, я думаю, это может быть потому, что я до сих пор не получил токен доступа на данный момент? Кто-нибудь может подумать, что я должен сделать, чтобы исправить это?

Related of "Выполнение запроса к API LinkedIn приводит к 401"

Для тех, кто читает это и хотел бы использовать LinkedIn Profile API решение моей проблемы состояло в том, что у меня не было действительного Access Token когда я попытался сделать первый запрос.

Первое, что я сделал, это создать ссылку, которая будет направлять пользователя в диалоговое окно проверки подлинности LinkedIn .

Затем пользователь решил бы утвердить или отклонить запрос моих приложений для доступа к их профилю. Независимо от их выбора, они перенаправляются на мой redirect url .

Отсюда у меня теперь есть access code который я могу использовать для запроса access token и, таким образом, совершать вызовы api.

 if (isset($_GET['error'])) { echo $_GET['error'] . ': ' . $_GET['error_description']; } elseif (isset($_GET['code'])) { getAccessToken(); //$user = fetch('GET', '/v1/people/~:(firstName,lastName)');//get name //$user = fetch('GET', '/v1/people/~:(phone-numbers)');//get phone numbers $user = fetch('GET', '/v1/people/~:(location:(name))');//get country var_dump($user); } 

Метод getAccessToken() который я использовал на основе кода на сайте разработчиков LinkedIn

https://developer.linkedin.com/documents/code-samples

  function getAccessToken() { $params = array( 'grant_type' => 'authorization_code', 'client_id' => 'MY API KEY', 'client_secret' => 'MY SECRET KEY', 'code' => $_GET['code'], 'redirect_uri' => 'MY REDIRECT URL', ); // Access Token request $url = 'https://www.linkedin.com/uas/oauth2/accessToken?' . http_build_query($params); // Tell streams to make a POST request $context = stream_context_create( array('http' => array('method' => 'POST', ) ) ); // Retrieve access token information $response = file_get_contents($url, false, $context); // Native PHP object, please $token = json_decode($response); // Store access token and expiration time $_SESSION['access_token'] = $token->access_token; // guard this! $_SESSION['expires_in'] = $token->expires_in; // relative time (in seconds) $_SESSION['expires_at'] = time() + $_SESSION['expires_in']; // absolute time return true; } 

Затем метод fetch() , также из API LinkedIn

 function fetch($method, $resource, $body = '') { $opts = array( 'http' => array( 'method' => $method, 'header' => "Authorization: Bearer " . $_SESSION['access_token'] . "\r\n" . "x-li-format: json\r\n" ) ); $url = 'https://api.linkedin.com' . $resource; if (count($params)) { $url .= '?' . http_build_query($params); } $context = stream_context_create($opts); $response = file_get_contents($url, false, $context); return json_decode($response); } 

Делая вышеизложенное, у меня не возникло проблем с запросом API . Справедливости ради Cbroe, который комментировал выше. Мне не хватало этой информации. Если он / она захочет оставить ответ, я с радостью соглашусь, но просто хочу, чтобы я включил свое решение для всех, кто сталкивался с проблемой, которую я имел.