Linkedin - Невозможно получить токен доступа - PullRequest
0 голосов
/ 03 апреля 2019

Я получаю сообщение об ошибке ниже при вызове Linkedin API для токена доступа:

"Невозможно получить токен доступа: appid / redirect uri / верификатор кода не совпадает с кодом авторизации. Или код авторизации истек. Или существует привязка внешнего элемента"

вот ссылка, по которой я звоню:

https://www.linkedin.com/oauth/v2/accessToken?client_id=L1kfji328dfpoef&client_secret=klOpdfkJHGHuLOm14sdfkOj&grant_type=authorization_code&redirect_uri=http://example.com/linkedin-redirect&code=AQUIdkfdiksdr4D18sdfkiHk52LX5pX_T4AgKOKHU45Hrt7Bcu0ln8d2PITq8DuvNkVftV-plJ2tvOU4TnMAQ-nksdldTYkL902G9p0MKLKkljsd9mtNjjzBgq-lFqlcqtD4T2mYWmW498fJ7GbkDpyiQXHFo6xFsbSdrJxe3dJgh2A5edgpprm3vAY9REVM-Osdfki1

Может кто-нибудь подсказать, что я делаю не так или что-то упустил здесь. Я уже изучил большинство ответов, представленных здесь, но не повезло.

Ответы [ 4 ]

0 голосов
/ 18 апреля 2019

Код ниже поможет вам получить токен доступа

       $params = array('grant_type' => 'authorization_code',
            'client_id' => $this->api_key,
            'client_secret' => $this->api_secret,
            'code' => $_GET['code'],
            'redirect_uri' => base_url().$this->redirect,
        );
        // Access Token request
        $url = 'https://www.linkedin.com/oauth/v2/accessToken?' . http_build_query($params);
        $data_len = strlen(http_build_query($params));
        // Tell streams to make a POST request
        $context = stream_context_create(
                array('http' =>
                    array('method' => 'POST','header'=> 'Content-Length: 0'
                    )
                )
        );

        // Retrieve access token information
        $response = file_get_contents($url, false, $context);
        $token = json_decode($response);
        return $token->access_token;
0 голосов
/ 03 апреля 2019

Убедитесь, что ваш идентификатор клиента, секрет клиента и URI перенаправления соответствуют конфигурации параметров авторизации приложения LinkedIn для разработчиков.

0 голосов
/ 18 апреля 2019

У меня та же проблема. Я пытался использовать эти API с Android и, в частности, с библиотекой AppAuth. Эта библиотека также автоматически включает в запрос параметр code_verifier, и если вы добавите его, вы получите другой ответ. Верификатор кода может быть рандомизированной строкой, но вы должны отправить ее как /oauth/v2/authorization, так и /oauth/v2/accessToken.

После добавления, что я получаю другую ошибку, которая просто access_denied с 500 Internal Server Error. Отсюда я понятия не имею, что происходит, и поддержка разработчиков LinkedIn - это просто шутка.

PS: параметр code_verifier не упоминается в документе LinkedIn, но сервер запрашивает его, и это параметр STANDARD для OAuth2, как вы можете видеть здесь

PPS: Вы используете POST-запрос с Content-Type = x-www-form-urlencoded? URL-адрес, который вы разместили здесь, выглядит как GET с параметрами, переданными в качестве параметров запроса, а не как POST с параметрами в формате urlencoded

РЕДАКТИРОВАТЬ: Я наконец получил это работает! Вам не нужен code_verifier, что для меня помогло УДАЛИТЬ параметр state. После удаления я получил токен доступа. Я ненавижу linkedin больше, чем когда-либо.

0 голосов
/ 03 апреля 2019

Вы должны пройти аутентификацию и попросить токен.Затем, когда у вас есть токен, вы можете перейти к вашему запросу.

Это потому, что LinkedIn использует Oauth2 auth

...