1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > php 公众号授权登录 微信公众号授权登录 | 时刻需

php 公众号授权登录 微信公众号授权登录 | 时刻需

时间:2020-08-05 19:51:48

相关推荐

php 公众号授权登录 微信公众号授权登录 | 时刻需

微信公众号登录分两步走

1,获取code(让马化腾服务器请求我们的服务器并带上 code)

微信登录

2.获取用户的openid(通过传递过来的code,生成openid openid是唯一的)

function index(){

//P($_GET);

$state_value = '123';

$appid = "xxxxxx"; // 正常时从数据库取数据

$appsecret = "xxxxxxxxx"; // 正常时从数据库取数据

$return_url = 'http://z-/index.php/oauth2';

$get_codeUrl = 'https://open./connect/oauth2/authorize?appid=xxxxxxx&redirect_uri='.$return_url.'&response_type=code&scope=snsapi_base&state='.$state_value.'#wechat_redirect';

$get_accessUrl = 'https://api./sns/oauth2/access_token?appid='.$appid.'&secret='.$appsecret.'&code='.$_GET['code']."&grant_type=authorization_code";

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $get_accessUrl);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$output = curl_exec($ch);

curl_close($ch);

$jsoninfo = json_decode($output, true);

// ajaxReturn($jsoninfo,'JSONP');

$_SESSION['openid'] = $jsoninfo['openid'];

$this->redirect('user_insert/index');

}

3.根据openid获取用户信息(可以加上附加参数来做微信的分销功能)

// 获取微信 access_token 和 用户信息

function wx_get($openid,$chief){

//整理 访问微信服务器的地址 start

// P($_SESSION['wx_access_token']);

$chief = $chief ? $chief : 'qrscene_666';

$openid = $openid ? $openid : 'oNlhuxOMiPzAsCM8POazeEFzLLvk';

$wx_access_token = $_SESSION['wx_access_token'] ? $_SESSION['wx_access_token'] :'';

$wx_openid = $_SESSION['wx_openid'] ? $_SESSION['wx_openid'] :'';

// 先判断 access_token 是否存在 不存在则 重新获取 如果存在则 判断 是否可以用 不可以用则重新生成

if(!$wx_access_token || $wx_access_token ==''){

$appid = "xxxx"; // 正常时从数据库取数据

$appsecret = "xxxxxx"; // 正常时从数据库取数据

$url = "https://api./cgi-bin/token?grant_type=client_credential&appid=$appid&secret=$appsecret";

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$output = curl_exec($ch);

curl_close($ch);

$jsoninfo = json_decode($output, true);

$wx_access_token = $jsoninfo["access_token"];

$_SESSION['wx_access_token'] = $wx_access_token;

}else{

$get_userinfo = "https://api./cgi-bin/user/get?access_token=".$wx_access_token."&openid=".$wx_openid;

$userinfo_ch = curl_init();

curl_setopt($userinfo_ch, CURLOPT_URL, $get_userinfo);

curl_setopt($userinfo_ch, CURLOPT_SSL_VERIFYPEER, FALSE);

curl_setopt($userinfo_ch, CURLOPT_SSL_VERIFYHOST, FALSE);

curl_setopt($userinfo_ch, CURLOPT_RETURNTRANSFER, 1);

$userinfo_out = curl_exec($userinfo_ch);

curl_close($userinfo_ch);

$json_userinfo = json_decode($userinfo_out,true);

if(isset($json_userinfo['errcode'])){

$appid = "xxxx"; // 正常时从数据库取数据

$appsecret = "xxxxxxx"; // 正常时从数据库取数据

$url = "https://api./cgi-bin/token?grant_type=client_credential&appid=$appid&secret=$appsecret";

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$output = curl_exec($ch);

curl_close($ch);

$jsoninfo = json_decode($output, true);

$wx_access_token = $jsoninfo["access_token"];

$_SESSION['wx_access_token'] = $wx_access_token;

}

}

$get_userinfo = "https://api./cgi-bin/user/info?access_token=".$wx_access_token."&openid=".$openid;

$user_ch = curl_init();

curl_setopt($user_ch, CURLOPT_URL, $get_userinfo);

curl_setopt($user_ch, CURLOPT_SSL_VERIFYPEER, FALSE);

curl_setopt($user_ch, CURLOPT_SSL_VERIFYHOST, FALSE);

curl_setopt($user_ch, CURLOPT_RETURNTRANSFER, 1);

$user_out = curl_exec($user_ch);

curl_close($user_ch);

$json_user = json_decode($user_out,true);

// P($json_user);

//整理 访问微信服务器的地址 end

/* 整理获取到用户的数据 start */

$insert_user['user_name'] = $json_user['nickname'];

$insert_user['user_passwd'] = $json_user['openid'];

$insert_user['user_chief'] = $chief;

$insert_user['sex'] = $json_user['sex'];

$insert_user['phone'] = '';

$insert_user['user_pic'] = $json_user['headimgurl'];

$insert_user['country'] = $json_user['country'];

$insert_user['province'] = $json_user['province'];

$insert_user['city'] = $json_user['city'];

$insert_user['wx_openid'] = $json_user['openid'];

/* 整理获取到用户的数据 end */

//插入数据库

// P($insert_user);

$db_user = D('user');

$db_user->insert($insert_user);

// P($wx_access_token);

return(array('wx_access_token'=>$wx_access_token,'insert_user'=>$insert_user));

}

最后获得的用户信息可以直接存入数据库。(user_chief 为判断分销的字段,可以无限极分销(法律声明只能三级分销))

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。