linkedin oauth 无法交换访问令牌的授权码
linkedin oauth cant exchange auth code for access token
我正在尝试使用 linkedin 来获取用户的个人资料数据,我从登录表单上的一个按钮获取授权码,该按钮重定向到另一个页面,我希望在该页面上有一些字段填写他们的姓名等以创建用户或登录名。我无法用我的 post 将授权令牌换成访问令牌。我收到错误的请求或未经授权的响应。它说我缺少必需的参数"client_id",但它显然在那里......请看一下,谢谢。
$code = $_GET['code'];
$data =array(
"grant_type" =>"authorization_code",
"code"=> $code,
"redirect_uri" => "http:\localhost\index.php?doctor=linkedin",
"client_id" => "shh",
"client_secret" => "secret"
);
$str_data = json_encode($data);
//echo $str_data;
//function sendPostData($url, $post){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://www.linkedin.com/oauth/v2/accessToken');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS,$str_data);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded'));
curl_setopt($ch, CURLOPT_HEADERFUNCTION, "HandleHeaderLine");
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$result = curl_exec($ch);
$token = json_decode($result);
var_dump($token);
curl_close($ch); // Seems like good practice
function HandleHeaderLine( $curl, $header_line ) {
echo "<br>".$header_line; // or do whatever
return strlen($header_line);
}
LinkedIn 需要一个 POSTed 字段,作为查询字符串。尝试更改:
$str_data = json_encode($data);
至:
$str_data = http_build_query($data);
他们 documentation 的例子:
POST /oauth/v2/accessToken HTTP/1.1
Host: www.linkedin.com
Content-Type: application/x-www-form-urlencoded
grant_type=authorization_code&code=987654321&redirect_uri=https%3A%2F%2Fwww.myapp.com%2Fauth%2Flinkedin&client_id=123456789&client_secret=shhdonottell
希望对您有所帮助。
我正在尝试使用 linkedin 来获取用户的个人资料数据,我从登录表单上的一个按钮获取授权码,该按钮重定向到另一个页面,我希望在该页面上有一些字段填写他们的姓名等以创建用户或登录名。我无法用我的 post 将授权令牌换成访问令牌。我收到错误的请求或未经授权的响应。它说我缺少必需的参数"client_id",但它显然在那里......请看一下,谢谢。
$code = $_GET['code'];
$data =array(
"grant_type" =>"authorization_code",
"code"=> $code,
"redirect_uri" => "http:\localhost\index.php?doctor=linkedin",
"client_id" => "shh",
"client_secret" => "secret"
);
$str_data = json_encode($data);
//echo $str_data;
//function sendPostData($url, $post){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://www.linkedin.com/oauth/v2/accessToken');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS,$str_data);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded'));
curl_setopt($ch, CURLOPT_HEADERFUNCTION, "HandleHeaderLine");
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$result = curl_exec($ch);
$token = json_decode($result);
var_dump($token);
curl_close($ch); // Seems like good practice
function HandleHeaderLine( $curl, $header_line ) {
echo "<br>".$header_line; // or do whatever
return strlen($header_line);
}
LinkedIn 需要一个 POSTed 字段,作为查询字符串。尝试更改:
$str_data = json_encode($data);
至:
$str_data = http_build_query($data);
他们 documentation 的例子:
POST /oauth/v2/accessToken HTTP/1.1
Host: www.linkedin.com
Content-Type: application/x-www-form-urlencoded
grant_type=authorization_code&code=987654321&redirect_uri=https%3A%2F%2Fwww.myapp.com%2Fauth%2Flinkedin&client_id=123456789&client_secret=shhdonottell
希望对您有所帮助。