问题
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?
回答1:
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.
回答2:
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
)),
));
回答3:
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