2016-08-04 3 views
0

私はユーザーのプロファイルデータを取得するためにlinkedinを使用しようとしていますが、ログインフォームのボタンから認可コードを取得して、ユーザー名やログイン名を作成するための名前などが含まれています。私は私のポストとアクセストークンの認証トークンを交換することはできません。私は悪い要求や不正な応答を得る。それは私が必要なパラメータ "client_id"が不足していると言いますが、それは明らかにそこにあります...ありがとう、ありがとう。linkedin oauth cantはアクセストークンの認証コードを交換します

$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); 
} 

答えて

1

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 

お役に立てば幸いです。

関連する問題