2011-07-19 27 views
4

答案+新問題LinkedIn的OAuth和Zend檢索艾策斯標記,則返回「錯誤的HTTP請求」

我發現下面的代碼工作的LIVE服務器上就好了。 LinkedIN阻止了本地主機的所有請求。

確立;有人知道如何使用LinkedIN OAuth從localhost測試應用程序嗎?因爲在現場服務器上這樣做很糟糕!

老問題

我試圖用Zend_OAuth連接到LinkedIn。此代碼用於工作,但現在它在http請求中返回一個錯誤,而我試圖檢索訪問令牌。

嘗試檢查LinkedIN api,但代碼似乎仍然有效。嘗試了幾個腳本,但都有相同的結果。

的配置是在我的控制器

$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' 
    ); 

而且在行動代碼的preDispatch設置連接到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的類似設置,並且工作正常。

UPDATE 9月20日211

我發現這個規則返回錯誤:

$token = $this->consumer->getRequestToken(); 

我仍然一無所知,爲什麼,以及讀取LinkedIn API不不免有點。會及時向大家發佈。

回答

2

我有類似的問題,加入OpenSSL的推廣後,這是解決

嘗試添加爲php.ini這一行:

extension=php_openssl.dll 
+1

這是正確答案嗎? –

0

我得到了同樣的問題,請嘗試關閉SSL要求之前新消費者:

 $httpConfig = array(
     'adapter' => 'Zend\Http\Client\Adapter\Socket', 
     'sslverifypeer' => false 
    ); 

    $httpClient = new HTTPClient(null, $httpConfig); 
    OAuth::setHttpClient($httpClient); 
相關問題