0

当我尝试从linkedin请求其他权限时,除了基本权限外,我没有在对话框中获得任何权限列表。any1 可以指出我的解决方案。我尝试对权限进行urlencoding,但仍然没有得到任何响应。这是我的代码:我在单击“使用 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);
    }

}

谢谢你。

4

1 回答 1

1

经过严格的搜索终于从这个Linkedin帖子中得到了解决方案

需要在 getRequestToken 调用中请求linkedin 权限:

$requestToken = $consumer->getRequestToken(array('scope' =>'r_emailaddress'));
于 2012-09-28T05:00:17.197 回答