我将linkedin访问令牌存储在数据库中。这是存储在我的数据库中的令牌:
oauth_token=xxxxxxxxxxxxxxxxxxx&oauth_token_secret=xxxxxxxxxxxxxxxxxxx&oauth_expires_in=5183998&oauth_authorization_expires_in=5183998
我想使用此访问令牌检索linkedin连接。我想打个电话:
$a = new Zend_Oauth_Token_Access();
$client = $a->getHttpClient( array(
'siteUrl' => LIN_SITE_URL,
'callbackUrl' => LIN_SITE_CALLBACK_URL,
'requestTokenUrl' => LIN_REQUEST_TOKEN_URL,
'userAuthorizationUrl' => LIN_USER_AUTHORIZATION_URL,
'accessTokenUrl' => LIN_ACCESS_TOKEN_URL,
'consumerKey' => LIN_CONSUMER_KEY,
'consumerSecret' => LIN_CONSUMER_SECRET
) );
$client->setUri('http://api.linkedin.com/v1/people/~/connections:(id,first-name,last-name,picture-url)');
$client->setParameterGet('token',$linToken);
$client->setMethod(Zend_Http_Client::GET);
$response = $client->request();
$content = $response->getBody();
$data = json_decode(Zend_Json::fromXml($content, false));
print_r($data); echo "<br/>";
我到这里的错误是:
stdClass Object ( [error] => stdClass Object ( [status] => 404 [timestamp] => 1349429996351 [request-id] => 8U8A1UNF1V [error-code] => 0 [message] => Could not find person based on: ~ ) )
这是拨打电话的正确方式还是我在这里做错了什么。我正在使用zend框架。
感谢。
答案 0 :(得分:3)
我能够通过将outh_token和outh_token_secret作为数组传递给Zend_Oauth_Token_Access的setParams()来解决问题,如下所示:
$a = new Zend_Oauth_Token_Access;
$a->setParams(array(
'oauth_token' => 'xxxxxxxxxxxxxxxxxxxxxxxxxx',
'oauth_token_secret' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx'
));
答案 1 :(得分:1)
在您的代码示例中,我看不到您在何处设置访问令牌和密码。我只是看到你实例化$ a变量:
$a = new Zend_Oauth_Token_Access();
您是否从数据库中检索访问令牌和机密,然后将其设置为$ a变量?像这样:
$a->setToken($row['token'])
->setTokenSecret($row['secret']);
顺便说一下,这是使用Zend和LinkedIn的一个很好的参考:http://www.contentwithstyle.co.uk/content/linkedin-and-zendoauth/