用LinkedIn PHP代码问题登录

时间:2017-08-17 11:10:43

标签: javascript php html web linkedin-api

我实现了以下代码,用于从LinkedIn帐户中检索特定详细信息并将其保存到数据库中。虽然他们正确检索数据但未正确保存到数据库。不确定我的查询有问题。请查看我的编码并指出问题。任何形式的帮助都会非常感激。

    <?php

    session_start();

    $client_id = "";
    $client_secret = "";
    $redirect_uri = "http://localhost:8888/Exercise/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);
        $headers = [];
        $headers[] = "Content-Type: application/x-www-form-urlencoded";
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
        $result = curl_exec($ch);
        return $result;
    }

    function getCallback()
    {
      $client_id = "";
      $client_secret = "";
      $redirect_uri = "http://localhost:8888/Exercise/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);

     $User = json_decode(post_curl($url)); // Request user information on received token

$query = "INSERT INTO `linkedti_scheduler`.`users`
                   (`userid`,
                   `firstName`,
                   `lastName`,
                   `emailAddress`,
                   `position`,
                   `location`,
                   `profileURL`,
                   `headline`)

                   VALUES

                   ('$id',
           '$firstName',
           '$lastName',
           '$emailAddress',
           '$position',
           '$location',
           '$profileURL',
           '$headline')";
           mysqli_query($connection,$query);


            return (json_decode($user));



        }
    }
     ?>

1 个答案:

答案 0 :(得分:2)

您需要使用$User对象引用字段,如下所示:

 $User = json_decode(post_curl($url)); // Request user information on received token

$query = "INSERT INTO `linkedti_scheduler`.`users`
               (`userid`,
               `firstName`,
               `lastName`,
               `emailAddress`,
               `position`,
               `location`,
               `profileURL`,
               `headline`)

               VALUES

               ('$id',
       '$User->firstName',
       '$User->lastName',
       '$User->emailAddress',
       '$User->position',
       '$User->location',
       '$User->profileURL',
       '$User->headline')";

另外,请注意,您没有在此处使用MySQL转义 - 我建议使用准备好的查询来防止单引号出现任何问题:

https://secure.php.net/manual/en/mysqli.quickstart.prepared-statements.php