欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  博文

百度社会化登录_如何实现百度社会化登录_百度社会化登录实例

程序员文章站 2022-03-01 15:13:20
...

社会化登录在现在大多数的网站中都会存在的,比较火的有 新浪、人人、QQ、 如果挨个对这些平台做开发的话,会花费开发者很长的时间来开发和测试。当然了,百度社会化服务解决了这个问题。

直接代码:

<?php
/**
 * WebApp - 团购第三方登录model
 */
class WeboauthModel{
	/**
	 * 第三方登录
	 */
	public function loginAppUser(){
		$accesstoken=$this->requestAccessToken($_GET[´code´]);
		if($accesstoken==false){
			return false;
		}
		//返回第三方用户信息
		$userinfo=$this->requestUserInfo($accesstoken[´access_token´]); 
		var_dump($userinfo);
	}
	public function loginUser($phone,$password){
		$passport=model(´Passport´);
		$result=$passport->loginLocal(phone,$password);
		if(!$result){
			$status = 0; 
			$info	= $passport->getError();
			$data 	= 0;
		}else{
			$status = 1;
			$info 	= $passport->getSuccess();
			$data 	= ($GLOBALS[´ts´][´site´][´home_url´])?$GLOBALS[´ts´][´site´][´home_url´]:0;
		}
		return array(´status´=>$status,´info´=>$info,´data´=>$data);
	}
    /**
     * 获取AccessToKen 
     */
    private function requestAccessToken($code){
		$url = ´https://openapi.baidu.com/social/oauth/2.0/token´;
        $client_id = ´API Key´;
        $client_secret = ´Secret Key´;
        $redirect_uri=´回调地址、与应用中回掉地址相同´;
        $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;
    }
}
//end class
?>


回调文件

<?php
 // 第三方登录回调方法
 include(´./social/WeboauthModel.class.php´);
 $token = $_GET[´code´];
 $Weboauth = new WeboauthModel();
 $Weboauth->loginAppUser($token);
?>
 //返回值为json、做了json_decode();
array(16) {
 ["username"]=>
 string(6) "真名、"
 ["sex"]=>
 string(1) "1"
 ["birthday"]=>
 string(4) "1991"
 ["tinyurl"]=>
 string(75) "http://hdn.xnimg.cn/photos/hdn321/20120101/1950/tiny_t6Jq_119344n019117.jpg"
 ["headurl"]=>
 string(80) "http://hdn.xnimg.cn/photos/hdn121/20120101/1950/h_head_KXXQ_7a90000220ec2f75.jpg"
 ["mainurl"]=>
 string(80) "http://hdn.xnimg.cn/photos/hdn121/20120101/1950/h_main_eBB8_7a90000220ec2f75.jpg"
 ["hometown_location"]=>
 array(2) {
 ["province"]=>
 string(6) "河北"
 ["city"]=>
 string(9) "沧州市"
 }
 ["work_history"]=>
 array(1) {
 [0]=>
 array(4) {
 ["name"]=>
 string(18) "北京一起新游"
 ["time"]=>
 string(0) ""
 ["industry"]=>
 NULL
 ["job"]=>
 NULL
 }
 }
 ["university_history"]=>
 string(24) "注释"
 ["hs_history"]=>
 array(0) {
 }
 ["province"]=>
 string(0) ""
 ["city"]=>
 string(0) ""
 ["is_verified"]=>
 string(1) "1"
 ["media_uid"]=>
 string(9) "-------"
 ["media_type"]=>
 string(6) "renren"
 ["social_uid"]=>
 int(------)
}
?>

//百度社会化服务参考、api地址
http://developer.baidu.com/dev#/appinfo/1728015/soc_login_select // 创建样式
//下面我们提供一段简单的PHP示例代码,来介绍应该如何实现"社会化服务回调地址"这个接口。

http://developer.baidu.com/wiki/index.php?title=docs/social/guide/web_login/web_login5

http://developer.baidu.com/wiki/index.php?title=docs/social/api/list //api列表

注意回调地址应与应用地址相同