namespace Portal\Controller;
use Common\Controller\HomebaseController;
/**
* 微信授权登录
*/
class LoginController extends HomebaseController {
//appid和appsecret
$appid = “******”;
$appsecret = “*********”;
$redirect_uri = "http://域名/index.php/login/login"; //触发微信返回code码,也是返回code后的跳转网址
//微信授权登录
public function login() {
//通过code获取openid
if(!isset($_GET["code"])){
$url='https://open.weixin.qq.com/connect/oauth2/authorize?appid='.$appid.'&redirect_uri='.urlencode($redirect_uri).'&response_type=code&scope=snsapi_userinfo&state=state#wechat_redirect';
header('location:'.$url);
}else{
//获取code码,以获取openid和access_token
$code = $_GET["code"];
$res = $this -> getAccessToken($code);
$openid = $res["openid"];
$access_token = $res["access_token"];
//通过openid和access_token获取登录的用户信息
$info = $this -> getUserinfo($openid, $access_token);
//数据库数据处理
......
}}
//获取openid 和 access_token
public function getAccessToken($code) {
$url="https://api.weixin.qq.com/sns/oauth2/access_token?appid=".$appid."&secret=".$appsecret."&code=".$code."&grant_type=authorization_code";
$result = $this -> http_curl($url);
$result = json_decode($result, true);
return $result;}
//获取用户信息
public function getUserinfo($openid, $access_token){
$url="https://api.weixin.qq.com/sns/userinfo?access_token=".$access_token."&openid=".$openid."&lang=zh_CN";
$result = $this -> http_curl($url);
$result = json_decode($result, true);
return $result;}
// 请求接口返回内容
public function http_curl($url, $data=null) {
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
$result = curl_exec($curl);
curl_close($curl);
return $result;
}
}
注意:公众号设置中的网页授权域名要和$redirect_uri网址中的域名一致