28
2013-11

利用百度账号开发社会化登录

社会化登录在现在大多数的网站中都会存在的,比较火的有 新浪、人人、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列表
注意回调地址应与应用地址相同

本文摘自:松林's blog


除非注明,文章均为史亚永原创,欢迎转载!转载请注明本文地址,谢谢。

本文地址:http://www.shiyayong.cn/post/240.html

评论列表:

发表评论:

(设置个性头像)

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

无觅相关文章插件,快速提升流量