I try to authenticate with LinkedIn API with OAuth2. Code:
if ((isset($_GET["code"])) AND (isset($_GET["state"]))) {
$code = $_GET["code"];
$state = $_GET["state"];
$curl_request = curl_init();
curl_setopt_array($curl_request, array(
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_URL => "https://www.linkedin.com/uas/oauth2/accessToken",
CURLOPT_POST => 1,
CURLOPT_POSTFIELDS => array(
grant_type => "authorization_code",
code => "$code",
redirect_uri => "SECRET",
client_id => "SECRET",
client_secret => "SECRET"
)
));
$curl_result = curl_exec($curl_request);
var_dump($curl_result);
}
I got this message:
string(153) "{"error_description":"missing required parameters, includes an invalid parameter value, parameter more than once. : client_id","error":"invalid_request"}"
Could you help m?
You need to add the following header in your cURL POST call to ensure that the values you are passing in the body of your POST are interpreted correctly:
Content-Type: application/x-www-form-urlencoded
For additional info, see http://tools.ietf.org/html/rfc6749#section-4.1.3 for the actual OAuth 2.0 RFC spec.
Use: http_build_query
curl_setopt_array($curl, array(
CURLOPT_HTTPHEADER => array('Content-Type: application/x-www-form-urlencoded'),
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_URL => 'https://www.linkedin.com/uas/oauth2/accessToken',
CURLOPT_POST => 1,
CURLOPT_POSTFIELDS => http_build_query (array(
client_id => "secret",
client_secret => "secret",
grant_type => "authorization_code",
redirect_uri => "url",
code => $code
)),
));
I am weirded out by this, but I just had the same problem and when I just moved client id and secret to beginning of the POST array and everything worked. I don't even.
来源:https://stackoverflow.com/questions/28585655/missing-required-parameters-includes-an-invalid-parameter-value-parameter-more