PHP - 在 LinkedIN 上授权 API

PHP - Authorizate on LinkedIN API

我尝试进行一些简单的 LinkedIN api 调用,从授权开始。 出于测试目的,我只创建了这个 $url,我知道它可以工作并打开它。

但有一点不同,如果我通过下面的代码调用它 URL 并输入我的 linkedin 凭据,我会自动重定向到

http://localhost/uas/oauth2/authorizedialog/submit

看起来像一些 linkedin URL 被 "localhost" 代替了,我确定它不是我的 redirect_uri 而且我没有在任何地方定义它。

我找不到发生这种情况的原因,如果我直接在浏览器中打开页面(只需从 $url 复制粘贴 URL),我将在登录后重定向到 example.com应该如此。

我的代码:

//define path

$url = "https://www.linkedin.com/uas/oauth2/authorization?response_type=code&client_id=MyIdHere&redirect_uri=https%3A%2F%2Fwww.example.com%2Fauth%2Flinkedin&state=DCEeFWf45A53sdfKef424&scope=r_basicprofile";

// set up the curl resource
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(                                                                          
    'Content-Type: application/x-www-form-urlencoded'          
));       

 // execute the request
 $output = curl_exec($ch);

 // output the auth information - includes the header
 var_dump($output);

// close curl resource to free up system resources
curl_close($ch);
?>

感谢您的建议。

您的 cURL 代码不像浏览器那样遵循重定向,因此在 LinkedIn 提供的响应中没有跟进 Location header。另见 Make curl follow redirects?

但是:您实际上也不应该尝试修复该问题,因为 OAuth 2.0 流程旨在通过浏览器与用户交互并在 PHP 中对其进行逆向工程会在某些时候中断。相反,您应该通过常规 browser-based 流程获取访问令牌,并在您的 PHP 代码中使用它来访问 LinkedIn API。