php的第三方登录--百度

在网站的开发功能中,我们很多时间需要做第三方登录,比如说QQ,百度账号,新浪微博等可以登录自己的网站。

          

       百度账号登录。

<button οnclick="baidu()" class="u-btn btn-bd">使用百度帐号登录</button>

function baidu(){
           window.location.href = "<{$web_url}>/index.php/login/baidu";

       }
   public  function baidu(){
        //client_id  这个需要在百度开发者平台申请
        //redirect_uri  这个就是 申请账号的写的回调地址
        //
        $url = "http://openapi.baidu.com/social/oauth/2.0/authorize?media_type=baidu&client_id=*********&state=&response_type=code&redirect_uri=http%3A%2F%2
           F*****&display=page&client_type=web";
        header("location:".$url);
    }
这个就是百度验证请求的信息 ,要是正确的话  会返回一个code到你的回调地址,这个code也就是相当于一个钥匙,有了这个钥匙,你就可以去寻找百度账号的有关信

       

         返回的code格式

http://www.****/?code=226d900af50345e49513bc4f320f6007&state=
      然后就是:

  $accesstoken=$this->requestAccessToken($code);
  $userinfo=$this->requestUserInfo($accesstoken['access_token']); //返回第三方用户信息
 /**
     * 获取AccessToKen
     */
    private function requestAccessToken($code){
        $url = 'https://openapi.baidu.com/social/oauth/2.0/token';
        $client_id = '*********';//这个需要百度申请
        $client_secret = '*************************';//这个需要百度申请
        $redirect_uri='**********';//这个需要跟申请时候写的回调地址一样  格式;http://www.***.com
        $params = array(
            'grant_type'    =>  'authorization_code',
            'client_id'     =>  $client_id,
            'client_secret' =>  $client_secret,
            'redirect_uri'  =>  $redirect_uri,
            'code'          =>  $code,
        );
        $ch = curl_init();
        $curl_opts = array(
            CURLOPT_CONNECTTIMEOUT	=> 3,
            CURLOPT_TIMEOUT			=> 5,
            CURLOPT_USERAGENT		=> 'baidu-apiclient-php-2.0',
            CURLOPT_HTTP_VERSION	=> CURL_HTTP_VERSION_1_1,
            CURLOPT_RETURNTRANSFER	=> true,
            CURLOPT_HEADER			=> false,
            CURLOPT_FOLLOWLOCATION	=> false,
        );
        if (stripos($url, 'https://') === 0) {
            $curl_opts[CURLOPT_SSL_VERIFYPEER] = false;
        }
        $query = http_build_query($params, '', '&');
        $delimiter = strpos($url, '?') === false ? '?' : '&';
        $curl_opts[CURLOPT_URL] = $url . $delimiter . $query;
        $curl_opts[CURLOPT_POST] = false;
        curl_setopt_array($ch, $curl_opts);
        $result = curl_exec($ch);
        if ($result === false) {
            curl_close($ch);
            return false;
        } elseif (empty($result)) {
            $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
            if ($http_code != 200) {
                curl_close($ch);
                return false;
            }
        }
        curl_close($ch);
        return  json_decode($result, true);
    }

    /**
     * 返回第三方用户信息
     * @param $access_token
     */
    private function requestUserInfo($access_token){
        $url="https://openapi.baidu.com/social/api/2.0/user/info?access_token={$access_token}";
        $result=file_get_contents($url);
        $result =json_decode($result,true);
        return $result;
    }
var_dump($userinfo)   就可以显示出百度接口



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值