Проблема с Linkedin Oauth – oauth_verifier

Имея некоторые проблемы с попыткой обменять токены JSAPI на REST Oauth Tokens ( https://developer.linkedin.com/documents/exchange-jsapi-tokens-rest-api-oauth-tokens )

Я использую эту библиотеку – http://code.google.com/p/oauth-php/ – В отличие от расширения PECL, поскольку я не могу установить расширения на сервер.

Кажется, что есть много подобных вопросов, но никто не отвечает на вопрос – как использовать указанную выше библиотеку для аутентификации с помощью Linkedin.

Мой код выглядит следующим образом:

$cookie_name = "linkedin_oauth_" . $this->_c->linkedin_api_key; $credentials_json = stripslashes($_COOKIE[$cookie_name]); $credentials = json_decode($credentials_json); // Get the Access Token + Secret $access_token_url = 'https://api.linkedin.com/uas/oauth/accessToken'; OAuthStore::instance("2Leg", array( 'consumer_key' => $this->_c->linkedin_api_key, 'consumer_secret' => $this->_c->linkedin_api_secret )); try { $request = new OAuthRequester($access_token_url, 'POST', array( 'xoauth_oauth2_access_token' => $credentials->access_token )); $result = $request->doRequest(); } catch(OAuthException2 $e) { print_r($e->getMessage()); } 

Вывод выписок:

Request failed with code 400: oauth_problem=parameter_absent&oauth_parameters_absent=oauth_verifier

Как получить этот oauth_verifier? Насколько я понял, мне это не нужно, если я уже пропустил xoauth_oauth2_access_token?

Я проверил все переменные IE $ credentials и $ this -> _ c, и все переменные проходят правильно.

Related of "Проблема с Linkedin Oauth – oauth_verifier"

На самом деле это ошибка в библиотеке oauth-php. Библиотека неправильно обрабатывает параметры с префиксом xoauth_ * и обрабатывает их так же, как и обрабатывает параметры oauth_ *. Это нарушает спецификацию OAuth, и большинство (все?) Других библиотек OAuth не имеют этой проблемы. Исправление состоит в том, чтобы сделать следующее:

Внутри файла OAuthRequestSigner.php найдите следующее:

1) внутри функции getAuthorizationHeader найдите строку, которая гласит:

 if (strncmp($name, 'oauth_', 6) == 0 || strncmp($name, 'xoauth_', 7) == 0) 

и изменить его как:

 if (strncmp($name, 'oauth_', 6) == 0) 

2) Внутри функции getQueryString найдите строку, которая гласит:

 || (strncmp($name, 'oauth_', 6) != 0 && strncmp($name, 'xoauth_', 7) != 0)) 

и изменить его как:

 || (strncmp($name, 'oauth_', 6) != 0) 

После этого все, что вам нужно сделать, по существу такое же, как вы уже делали, а именно:

 try { $request = new OAuthRequester($access_token_url, "POST", array('xoauth_oauth2_access_token' => $access_token)); $result = $request->doRequest(); var_dump($result); } catch(OAuthException2 $e) { print_r($e->getMessage()); } 

И вы должны быть настроены. Если у вас возникнут какие-либо дополнительные проблемы, пожалуйста, не стесняйтесь обращаться к нашим форумам разработчиков, и я или кто-то еще из команды будет рад помочь.

Наслаждайтесь!

-Jeremy