javascript - 使用 LinkedIn 登录 PHP 代码问题

标签 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));



        }
    }
     ?>

最佳答案

您需要像这样使用 $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

关于javascript - 使用 LinkedIn 登录 PHP 代码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45733514/

相关文章:

javascript - 如何通过点击 td 按钮获取其值(value)

javascript - Ajax post 工作一次然后再次工作但不是异步的

php - SQL更新大量行

android - Android 上 chrome 25 中的语音输入

javascript - 是否有快捷方式或更短的语法来单独接收 req.body 的内容?

javascript - 无法使用 Cypress 自动化工具触发导航菜单的点击

php - 基于用户角色的 Woocommerce 最小订单总额

javascript - 为什么我无法让 Math.random() 和 if/else 语句的组合起作用?

html - 在matToolTip(Angular)中渲染HTML内容

javascript - 在内联javascript函数中输入参数