2012-09-22 61 views
0

當我嘗試從linkedin申請額外的權限時,除了基本許可外,我沒有在對話框中獲得任何權限列表。任何一個人都可以指出我的解決方案。我嘗試urlencoding的權限,但仍然沒有得到任何迴應。這裏是我的代碼:我點擊'註冊與Linkedin'按鈕來調用這個函數。Linkedin:權限請求不起作用

public function linkedinaccessAction() 
{ 
    $this->_helper->layout->disableLayout(); 
    $this->_helper->viewRenderer->setNoRender(); 

    $scope = 'r_basicprofile+r_emailaddress+r_network+r_contactinfo'; 

    $options = array(
          'version' => '1.0', 
          'siteUrl' => 'http://localhost/project/development/', 
          'callbackUrl' => 'http://localhost/project/development/signup/linkedinaccess', 
          'requestTokenUrl' => 'https://api.linkedin.com/uas/oauth/requestToken?scope=' . $scope, 
          'userAuthorizationUrl' => 'https://api.linkedin.com/uas/oauth/authorize', 
          'accessTokenUrl' => 'https://api.linkedin.com/uas/oauth/accessToken', 
          'consumerKey' => 'myconsumerkey', 
          'consumerSecret' => 'myconsumersecret' 
         ); 

    $consumer = new Zend_Oauth_Consumer($options); 


    if (!isset($_SESSION ['LINKEDIN_ACCESS_TOKEN'])){ 
     if(! empty ($_GET)){ 
      //consumer = new Zend_Oauth_Consumer($options); 
      $accessToken = $consumer->getAccessToken ($_GET, unserialize ($_SESSION ['LINKEDIN_REQUEST_TOKEN'])); 
      echo $accessToken; 
      $_SESSION ['LINKEDIN_ACCESS_TOKEN'] = serialize ($accessToken); 
     }else{ 
      $requestToken = $consumer->getRequestToken(); 
      $_SESSION ['LINKEDIN_REQUEST_TOKEN'] = serialize ($requestToken); 
      $consumer->redirect(); 
     } 
    }else{ 
     $accessToken = unserialize ($_SESSION ['LINKEDIN_ACCESS_TOKEN']); 

     // Use HTTP Client with built-in OAuth request handling 
     $client = $accessToken->getHttpClient($options); 

     // Set LinkedIn URI 
     $client->setUri('https://api.linkedin.com/v1/people/~'); 
     // Set Method (GET, POST or PUT) 
     $client->setMethod(Zend_Http_Client::GET); 
     // Get Request Response 
     $response = $client->request(); 

     // Get the XML containing User's Profile 
     $content = $response->getBody(); 
     print_r($content); 
    } 

} 

謝謝。

+0

上面的代碼將使用REST來訪問網絡 - 將有不需要使用JavaScript登錄插件,這就是你似乎在說你在做什麼。 –

+0

@PaulMennega - 感謝您的回覆。恩,那就對了。 – VishwaKumar

回答

1

嚴謹搜索後終於得到了這個Linkedin Post

的解決方案需要請求LinkedIn權限getRequestToken Call調查的一部分:

$requestToken = $consumer->getRequestToken(array('scope' =>'r_emailaddress'));