使用php

时间:2018-09-24 21:47:53

标签: php linkedin-api

我使用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=""。 在这个项目中,我想查看我的个人资料,其中包含着陆页上的详细信息,而不是空的,因为此处显示的是名字,例如名字和名字。

如何解决这些错误,谢谢

2 个答案:

答案 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,但是
  • accessToken API必须作为POST请求(而不是GET)请求,因此请确保您的cUrl调用发送了POST请求(请参阅:https://developer.linkedin.com/docs/oauth2#

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

答案 1 :(得分:0)

在$ accessToken之前尝试以下代码:

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



    return true;

这可以使错误消息得到解决