LinkedIn oAuth 2问题与client_id参数

时间:2014-05-10 07:40:27

标签: php oauth-2.0 linkedin

我试图在LinkedIn上创建一个使用OAuth2进行身份验证的应用程序并遇到一些错误。客户端在iOS设备上运行,并使用oAuth库来调用LinkedIn的服务器。我的iOS客户端成功获取了authorization_code。然后客户端应用程序将该authorization_code传递给我的服务器,该服务器尝试再次连接到linkedIN并获取access_token。这一步始终失败,我从LinkedIn收到以下错误:{"错误":" invalid_request"," error_description":"缺少必需参数,包括参数值无效,参数不止一次。 :client_id"}

我对LInkedIN的POST方法确实包含了client_id,它只包含一次,我已经三次检查了所有参数的值,它们是正确的。我还从https://www.linkedin.com/secure/settings多次重置了访问权限,我甚至在LinkedIn上创建了其他应用程序,我一直得到相同的结果。

我已经检查了其他回复,例如:unable to retrieve access token linkedin api并尝试了建议:撤销密钥,请求新密钥等,似乎没有任何效果。

这是我的服务器代码:

$tokenURL = 'https://www.linkedin.com/uas/oauth2/accessToken';
$redirectURL = 'https://staging.textsuggestions.com';
$clientId = '75a4ezqh741sup';
$clientSecret = 'XXXXXXXX';

$tokenArguments = array("grant_type" => "authorization_code",
"code" => $code,
"redirect_uri" => $redirectURL,
"client_secret" => $clientSecret,
"client_id" => $clientId);

// send the request to the server getting data
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $tokenURL);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $tokenArguments);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = json_decode(curl_exec($ch), true);
curl_close($ch);

if (!empty($response["error"])) {
error_log("Error is: " . $response["error"]);
exit (0);
} else {
// no error, get the access_token and do stuff with it
$timeout = $response["expires_in"];
$access_token = $response["access_token"];
}

3 个答案:

答案 0 :(得分:2)

好的我意识到我做错了什么,我使用的客户端应用程序库生成了完整的访问令牌(而不是auth代码)。所以我试图在授权代码的位置传入访问令牌。我从Linked In获得的错误肯定是误导性的,我应该更仔细地检查我正在使用的客户端库。

答案 1 :(得分:0)

您是否尝试针对此代码示例检查代码?

https://developer.linkedin.com/documents/code-samples

答案 2 :(得分:-1)

检查POST标头是否包含“ Content-Type”:“ application / x-www-form-urlencoded”。