Токен обновления OAuth API LinkedIn

Я использую LinkedIn API, чтобы получать обновления оттуда и отображать их на веб-сайте. При использовании OAuth я сохраняю токен в файле, а затем снова извлекаю его оттуда, чтобы предотвратить всплывающее окно входа в систему. Однако мне не ясно, когда истечет срок действия моего токена, как он будет обновляться. Ниже показано, как я читаю токен из файла:

        $config = json_decode(file_get_contents(".service.dat"));
        if( isset($config->key) && isset($config->secret) ) {
            $this->access_token = new OAuthConsumer($config->key, $config->secret);
        } 

Для аутентификации у меня есть следующее, чтобы получить токен запроса -

function getRequestToken()
{
    $consumer = $this->consumer;
    $request = OAuthRequest::from_consumer_and_token($consumer, NULL, "GET", $this->request_token_path);
    $request->set_parameter("oauth_callback", $this->oauth_callback);
    $request->sign_request($this->signature_method, $consumer, NULL);
    $headers = Array();
    $url = $request->to_url();
    $response = $this->httpRequest($url, $headers, "GET");
    parse_str($response, $response_params);
    $this->request_token = new OAuthConsumer($response_params['oauth_token'], $response_params['oauth_token_secret'], 1);
}

После создания токена я создаю URL-адрес авторизации:

function generateAuthorizeUrl()
{
    $consumer = $this->consumer;
    $request_token = $this->request_token;
    return $this->authorize_path . "?oauth_token=" . $request_token->key;
}

В документации LinkedIn говорится следующее о токене обновления:

Обновление токена доступа очень просто и может происходить без отображения диалогового окна авторизации для пользователя. Другими словами, это непрерывный процесс, который не влияет на взаимодействие с пользователем вашего приложения. Просто дайте вашему приложению пройти процесс авторизации, чтобы получить новый токен доступа с дополнительным 60-дневным сроком жизни.

Я не понимаю, что это значит. Если мне придется повторить весь путь от получения токена запроса снова, тогда разве это не потребует от меня повторного запроса http и необходимости всплывающего экрана входа в систему? Как мне этого избежать? Буду признателен за предложение.

Спасибо.


person JUG    schedule 15.07.2017    source источник


Ответы (3)


Выяснил. URL авторизации:

https://www.linkedin.com/oauth/v2/authorization

за которым следует URL-адрес токена доступа:

https://www.linkedin.com/oauth/v2/accessToken

это все, что мне действительно нужно было сделать (передать с правильными параметрами).

person JUG    schedule 21.07.2017

Если вы просматриваете документацию

Linkedin не предоставляет токен обновления, необходимый для повторного выполнения рабочего процесса.

Вот краткое объяснение:

Чтобы обновить токен доступа, просто повторите процесс авторизации, описанный в этом документе, чтобы получить новый токен. Во время рабочего процесса обновления при соблюдении следующих условий диалоговая часть процесса авторизации автоматически пропускается, и пользователь перенаправляется обратно на ваш URL-адрес обратного вызова, что делает получение обновленного токена доступа незаметным для пользователя процессом.

Обновите свои токены доступа

person Roshan    schedule 29.03.2018
comment
Хотя ответ может содержать ссылки для справки, сам ответ должен содержать хотя бы базовое объяснение. - person Johan; 29.03.2018

Существует также конечная точка для обновления токена по истечении срока его действия. Вот документация, как это сделать: https://developer.linkedin.com/docs/Refresh-Tokens-with-OAuth-2

person Purgarcita    schedule 18.10.2018