я не могу обменять код авторизации на токен доступа

Я пытаюсь использовать linkedin для получения данных профиля пользователя, я получаю код авторизации от кнопки в форме входа, которая перенаправляет на другую страницу, где я хочу иметь некоторые поля, которые заполняются их именем, например, для создания пользователя или имени входа. Я не могу обменять авторизационный токен на доступ с моим постом. Я получаю неверный запрос или несанкционированный ответ. он говорит, что я пропускаю обязательный параметр «client_id», но он, очевидно, есть … Пожалуйста, посмотрите, спасибо.

$code = $_GET['code'];
$data =array(
"grant_type" =>"authorization_code",
"code"=> $code,
"redirect_uri" => "http:\\localhost\index.php?doctor=linkedin",
"client_id" => "shh",
"client_secret" => "secret");

$str_data = json_encode($data);

//echo $str_data;//function sendPostData($url, $post){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://www.linkedin.com/oauth/v2/accessToken');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS,$str_data);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded'));
curl_setopt($ch, CURLOPT_HEADERFUNCTION, "HandleHeaderLine");
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

$result = curl_exec($ch);

$token = json_decode($result);
var_dump($token);

curl_close($ch);  // Seems like good practice

function HandleHeaderLine( $curl, $header_line ) {
echo "<br>".$header_line; // or do whatever
return strlen($header_line);
}

0

Решение

LinkedIn ожидает поле POSTed, как строку запроса. Попробуйте изменить:

$str_data = json_encode($data);

чтобы:

$str_data = http_build_query($data);

Пример из их документация :

POST /oauth/v2/accessToken HTTP/1.1
Host: www.linkedin.com
Content-Type: application/x-www-form-urlencoded

grant_type=authorization_code&code=987654321&redirect_uri=https%3A%2F%2Fwww.myapp.com%2Fauth%2Flinkedin&client_id=123456789&client_secret=shhdonottell

Надеюсь, это поможет.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]