一、基础准备
①:微信公众平台测试账号的申请(无正式号,建议使用) https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login
②:申请后,会得到相应的appid和appsecret;? ? ?然后扫测试号二维码。
③:找到网页授权功能,点击修改,填写网页授权的网址
二、源码
①:? 通过 snsapi_base 方法?
? ? public function getBaseInfo()
{
????????//获取code
? ? ? ? $appid = "wxbe96b525328a2e52";
????????$redirect_uri = urlencode("https://mypay.test.com/getWxCode");//回调地址??getWxCode 是一个方法? (提示:如果想直接访问https://mypay.test.com/getWxCode,需要配置路由【可参考http://08643.cn/p/bd4a58138b63】?)
? ? ? ? $url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=$appid&redirect_uri=$redirect_uri&response_type=code&scope=snsapi_base&state=123#wechat_redirect"; //state 可任意
$this->redirect($url,302);? ? // tp5的重定向方法?
}
public function getWxCode()
{
//获取access_token
?//获取openID
?$appid = "wxbe96b525328a2e52";
$appsecrt = "d773b696a5120145c46372c658dbcb63";
$code = $_GET['code'];
$url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=$appid&secret=$appsecrt&code=$code&grant_type=authorization_code";
$r = http_curl($url);? ?//http_curl 是写在common.php里面的一个方法,本文末将附上源码
$openid = $r['openid'];
$access_token = $r['access_token'];
var_dump('access_token是:' . $access_token . '=========' . 'openid是:' . $openid);
/*以下内容自己发挥,比如网页展示页面这些什么的*/
? ? }
②:? 通过 snsapi_userinfo? 方法 ,可获得用户详细信息
public function getCodeUserInfo()
{
//获取code
$appid = "wxbe96b525328a2e52";
$redirect_uri = urlencode("https://mypay.test.com/getWxUserInfo");//回调地址
$url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" . $appid . "&redirect_uri=" . $redirect_uri . "&response_type=code&scope=snsapi_userinfo&state=123#wechat_redirect";
$this->redirect($url,302);
}
public function getWxUserInfo()
{
//换取网页授权access_token
//获取openid
$appid = "wxbe96b525328a2e52";
$appsecrt = "d773b696a5120145c46372c658dbcb63";
$code = $_GET['code'];
$url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" . $appid . "&secret=" . $appsecrt . "&code=" . $code . "&grant_type=authorization_code";
$rjson = http_curl($url);??//http_curl 是写在common.php里面的一个方法,本文末将附上源码
? ?$access_token = $rjson['access_token'];//得到access_token ( 网页的)
? ? $openId = $rjson['openid'];//得到openid
? ? $userInfoUrl = "https://api.weixin.qq.com/sns/userinfo?access_token=$access_token&openid=$openId&lang=zh_CN";//获取用户信息
? ? $result =http_curl($userInfoUrl);?//http_curl 是写在common.php里面的一个方法,本文末将附上源码
? ? var_dump($result);//打印用户详细信息
}
========common.php? ? ?START? ? =========
function http_curl($url){
? ? $curl = curl_init();//初始化
? ? curl_setopt($curl,CURLOPT_URL,$url);//设置抓取的url
? ? curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,false);// https请求 不验证证书和hosts
? ? curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,false);
curl_setopt($curl,CURLOPT_HEADER,0);//? 设置头文件的信息作为数据流输出? 设置为1 的时候,会把HTTP信息打印出来? 不要http header 加快效率
? ? curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);//设置获取的信息以文件流的形式返回,而不是直接输出。 如果设置是0,打印信息就是true
? ? $data = curl_exec($curl);//执行命令
? ? $result = json_decode($data,true);
? ? if ($data == false) {
? ? ? ? ? echo "Curl Error:" . curl_error($curl);exit();
? ??}
? ??curl_close($curl);//关闭URL请求
? ? return $result;
}