百度社会化登录_如何实现百度社会化登录_百度社会化登录实例
2014-08-13 16:27:02  By: dwtedx

社会化登录在现在大多数的网站中都会存在的,比较火的有 新浪、人人、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列表

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

若资源对你有帮助、浏览后有很大收获、不妨小额打赏我一下、你的鼓励是维持我不断写博客最大动力

想获取DD博客最新资讯、你可以扫描下方的二维码、关注DD博客微信公众号(ddblogs)

或者你也可以关注我的新浪微博、了解DD博客的最新动态:DD博客官方微博(dwtedx的微博)

如对资源有任何疑问或觉得仍然有很大的改善空间、可以对该博文进行评论、希望不吝赐教

为保证及时回复、可以使用博客留言板给我留言: DD博客留言板(dwtedx的留言板)

感谢你的访问、祝你生活愉快、工作顺心、欢迎常来逛逛


快速评论


博文评论

  • 该博文还没有评论、赶快抢沙发吧...
DD记账
top
+