我使用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=""
。
在这个项目中,我想查看我的个人资料,其中包含着陆页上的详细信息,而不是空的,因为此处显示的是名字,例如名字和名字。
如何解决这些错误,谢谢
答案 0 :(得分:1)
第一个错误(未定义属性)是因为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,但是第二个错误与第一个错误有关,因为访问令牌为空,所以您会收到HTTP 400错误(错误请求)。因此,如果您修复了第一步,那么第二步就可以了。
答案 1 :(得分:0)
在$ accessToken之前尝试以下代码:
$context = stream_context_create(
array('http' =>
array('method' => 'POST',
)
)
);
return true;
这可以使错误消息得到解决