トークン取得後にプロフィール情報を取得したい
<?php
session_start ();
if (!$_SESSION['linkedin_access_token'])
{
echo 'Grant access first';
exit ();
}
## step 0
define ('LINKEDIN_KEY', 'xxxxxx');
define ('LINKEDIN_SECRET', 'xxxxxxx');
function urlencode_oauth ($str)
{
return str_replace ('+', ' ', str_replace ('%7E', '~', rawurlencode ($str)));
}
$links = array (
'request_token' => 'https://api.linkedin.com/uas/oauth/requestToken',
'authorize' => 'https://www.linkedin.com/uas/oauth/authorize',
'access_token' => 'https://api.linkedin.com/uas/oauth/accessToken',
);
## step 2
$params = array (
'oauth_consumer_key' => LINKEDIN_KEY,
'oauth_nonce' => sha1 (microtime ()),
'oauth_signature_method' => 'HMAC-SHA1',
'oauth_timestamp' => time (),
'oauth_token' => $_SESSION ['linkedin_access_token'],
'oauth_version' => '1.0'
);
## step 3
// sort parameters according to ascending order of key
// sort parameters according to ascending order of key
ksort ($params);
// prepare URL-encoded query string
$q = array ();
foreach ($params as $key => $value)
{
$q [] = urlencode_oauth ($key) . '=' . urlencode_oauth ($value);
}
$q = implode ('&', $q);
// generate the base string for signature
$parts = array (
'POST',
urlencode_oauth ('https://api.linkedin.com/v1/people/~'),
urlencode_oauth ($q)
);
$base_string = implode ('&', $parts);
## step 4
$key = urlencode_oauth (LINKEDIN_SECRET) . '&' . urlencode_oauth ($_SESSION ['linkedin_access_token_secret']);
$signature = base64_encode (hash_hmac ('sha1', $base_string, $key, true));
## step 5
$params ['oauth_signature'] = $signature;
$str = array ();
foreach ($params as $key => $value)
{
$str [] = $key . '="' . urlencode_oauth ($value) . '"';
}
$str = implode(', ', $str);
$headers = array (
'POST /v1/people/~ HTTP/1.1',
'Host: api.linkedin.com',
'Authorization: OAuth ' . $str,
'Content-Type: text/xml;charset=UTF-8',
'Content-Length: 0',
'Connection: close'
);
## step 6
$fp = fsockopen ("ssl://api.linkedin.com", 443, $errno, $errstr, 30);
if (!$fp)
{
echo 'Unable to connect to LinkedIn';
exit();
}
$out = implode ("\r\n", $headers) . "\r\n\r\n";
fputs ($fp, $out);
// getting LinkedIn server response
$res = '';
while (!feof ($fp)) $res .= fgets ($fp, 4096);
fclose ($fp);
echo '<pre>';
echo $res . "\n\n";
echo $_SESSION ['linkedin_access_token'] . "\n" . $_SESSION ['linkedin_access_token_secret'];
?>
どうしたの?それは私を示しています
HTTP/1.1 405 Method Not Allowed
Server: Apache-Coyote/1.1
x-li-request-id: H8M76QXW5O
Date: Tue, 04 Sep 2012 12:09:21 GMT
Vary: *
x-li-format: xml
Content-Type: text/xml;charset=UTF-8
Content-Length: 262
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<error>
<status>405</status>
<timestamp>1346760561727</timestamp>
<request-id>H8M76QXW5O</request-id>
<error-code>0</error-code>
<message>Unsupported POST target {/v1/people/~}</message>
</error>
xxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxx