使用 php 修复请求失败

Fix request failed using php

我使用 Linkedin 创建了一个 api 网站。创建所有文件后,我的应用程序 运行 正常,但唯一有问题的是当我尝试允许该网站时,出现以下错误:
我的目的是在这个页面访问:

我的代码在这一行有错误:

init.php

<?php 
SESSION_start();
$client_id="xxxxxxxxxxxxxx";
$client_secret="xxxxxxxxxxxxxxxx";
$redirect_uri="http://localhost/gmail-connect.php/callback.php";
$csrf_token = "random_int(1111111, 9999999)";
$scopes="r_basicprofile%20r_emailaddress";


function curl($url, $parameters)
{

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $parameters);
curl_setopt($ch, CURLOPT_POST, 1);
$header =[];
$header[] = "Content-type:applicationx-www-form-urlencoded";

$result = curl_exec($ch);
return $result;
}

function getCallback()
{
    $client_id="xxxxxxxxxxxxxx";
$client_secret="jxxxxxxxxxxxxxxxx";
$redirect_uri="http://localhost/gmail-connect.php/callback.php";
$csrf_token ="random_int(1111111, 9999999)";
$scopes="r_basicprofile%20r_emailaddress";

}

if(isset($_REQUEST['code'])) {

    $code = $_REQUEST['code'];
    $url = "https://www.linkedin.com/oauth/v2/accessToken";
    $params = [
    'client_id' => $client_id,
    'client_secret' => $client_secret,
    'redirect_uri' => $redirect_uri,
    'code' => $code,
    'grant_type' => 'authorization_code',
];

$accessToken = curl($url, http_build_query($params));
$accessToken = json_decode($accessToken)->access_Token;

$URL="https://api.linkedin.com/v1/people/~:(id,firstName,lastName,pictureUrls::(original),headline,publicProfileUrl,location,industry,positions,email-address)?format=json&oauth2_access_token=" .$accessToken;
$user = file_get_contents($url, false);
return(json_decode($user));


}

?>

Callback.php:

<?php
require_once "init.php";
$user = getCallback();
$_SESSION['user'] = $user;
header("location: landing.php");
?>

这是着陆页:

<?php
require "init.php";
if(!isset($_SESSION['user'])) {


$user = 0;
}
?>


<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>profile</title>
</head>
<body style="margin-top:200px; text-align:center;">
<div>
<h1>successful</h1>
<h1>here is describing your details info</h1>
<label style="font-weight:600">First Name</label><br>
<label><?php echo $user['firstName'] ?></label><br><br>

<label style="font-weight:600">Last Name</label><br>
<label><?php echo $user['lastName'] ?></label><br><br>


<label style="font-weight:600">Email address</label><br>
<label><?php echo $user['emailaddress'] ?></label><br><br>


<label style="font-weight:600">Headline</label><br>
<label><?php echo $user['headline'] ?></label><br><br>

<label style="font-weight:600">Industry</label><br>
<label><?php echo $user['industry'] ?></label><br><br>
<button><a href="logout.php">Log out</a></button>

</div>

</body>
</html>

x 为了安全起见,我放了$client_secret=""$client_id=""。 在这个项目中,我希望看到我的个人资料已完成,并在登陆页面上显示了详细信息,而不是空的,因为它显示在这里,例如名字中要写的名字等。

如何解决这些错误,谢谢

第一个错误(未定义 属性)是因为 HTTP 请求未在以下位置获得有效响应($accessToken):

$accessToken = curl();

这可能是因为请求的 URL 无效。您可以:

  • 检查 $params 数组是否设置正确。在调用 curl 之前调用 print_r($params)print_r(http_build_query($params)) 来检查它。
  • 检查 curl() 调用是否有正确的参数(url 和参数)最好只使用完整的 url ($url 。" " . http_build_query($params)) 如果请求使用 GET,但是
  • accessToken API 必须作为 POST 请求(而非 GET)请求,因此请确保您的 cUrl 调用发送 POST 请求(参见:https://developer.linkedin.com/docs/oauth2#

第二个错误与第一个错误有关,因为访问令牌为空,您收到 HTTP 400 错误(错误请求)。因此,如果您解决了第一步,那么第二步就可以了。

在 $accessToken 之前尝试此代码:

$context = stream_context_create(
                    array('http' => 
                        array('method' => 'POST',
                        )
                    )
                );



    return true;

这解决了错误信息