繁体   English   中英

LinkedIn oAuth 2 问题与 client_id 参数

[英]LinkedIn oAuth 2 issue with client_id parameter

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

我对 LInkedIN 的 POST 方法确实包含 client_id,它只包含一次,并且我已经三次检查了所有参数的值,它们是正确的。 我还多次从https://www.linkedin.com/secure/settings重置访问权限,我什至在 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"];
}

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

您是否尝试根据此代码示例检查您的代码?

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM