Ответ + новый вопрос
Я обнаружил, что приведенный ниже код отлично работает на LIVE-сервере. LinkedIN заблокировал все запросы с локального хоста.
Это установлено; Кто-нибудь знает, как протестировать приложение с локального хоста с помощью LinkedIN OAuth? Потому что делать это на живом сервере — отстой!
Старый вопрос
Я пытаюсь подключиться с помощью Zend_OAuth к LinkedIN. Раньше этот код работал, но теперь он возвращает ошибку в HTTP-запросе, когда я пытаюсь получить токен доступа.
Пытался проверить API LinkedIN, но код все еще кажется действительным. Пробовал несколько скриптов, но все с тем же результатом.
Конфигурация настроена в preDispatch моего контроллера.
$this->configLinkedin = array(
'version' => '1.0',
'siteUrl' => 'http://'.$_SERVER['HTTP_HOST'].$this->view->baseUrl(false).'/news/index/connectlinkedin',
'callbackUrl' => 'http://'.$_SERVER['HTTP_HOST'].$this->view->baseUrl(false).'/news/index/connectlinkedin',
'requestTokenUrl' => 'https://api.linkedin.com/uas/oauth/requestToken',
'userAuthorisationUrl' => 'https://api.linkedin.com/uas/oauth/authorize',
'accessTokenUrl' => 'https://api.linkedin.com/uas/oauth/accessToken',
'consumerKey' => 'XXX',
'consumerSecret' => 'XXX'
);
И код в действии для подключения к linkedIN:
$this->consumer = new Zend_Oauth_Consumer($this->configLinkedin);
if(!empty($_GET) && isset($_SESSION['LINKEDIN_REQUEST_TOKEN']))
{
$token = $this->consumer->getAccessToken($_GET, unserialize($_SESSION['LINKEDIN_REQUEST_TOKEN']));
// Use HTTP Client with built-in OAuth request handling
$client = $token->getHttpClient($this->configLinkedin);
// Set LinkedIn URI
$client->setUri('https://api.linkedin.com/v1/people/~:(id,first-name,last-name,picture-url)');
// Set Method (GET, POST or PUT)
$client->setMethod(Zend_Http_Client::GET);
// Get Request Response
$response = $client->request();
$this->NewsService->TokenSocialMedia(
$token,
'linkedin',
serialize($response->getBody())
);
$_SESSION['LINKEDIN_REQUEST_TOKEN'] = null;
$this->_helper->flashMessenger(array('message' => $this->view->translate('The CMS is successfully connected to your linkedin account'), 'status' => 'success'));
$this->_helper->redirector('settings#settingSocial', 'index');
}
else
{
$token = $this->consumer->getRequestToken();
$_SESSION['LINKEDIN_REQUEST_TOKEN'] = serialize($token);
$this->consumer->redirect();
}
Что я упускаю или делаю неправильно? Я использую аналогичную настройку для Twitter, и она отлично работает.
ОБНОВЛЕНИЕ 20 сентября 211 г.
Я узнал, что это правило возвращает ошибку:
$token = $this->consumer->getRequestToken();
Я до сих пор не знаю, почему, и чтение API-интерфейса linkedin немного помогает. Буду держать вас в курсе.