前言
没有前言
准备工作
微信服务号一个
审核通过的网页域名一个,将域名绑定到小程序或者公众号的服务端域名或者网页授权域名。
将校验文件放到绑定域名的web根目录,并确保可以访问。
登录公众号获取appid,secret,设置ip白名单(只获取openid不需要设置)
公众号开发实例
public function request_wechat1()
{
// 获取当前模块控制器和方法,便于session失效的时候重新获取,请求微信服务器出现白屏问题
/*$module = $request->param('module');
$controller = $request->param('controller');
$action = $request->param('action');*/
// 回调地址
$redirect_url = 'http://jdhc.linkunst.com/index/login/get_open_id1';
$app_id = Config::get('sdkparam.wxmp')['app_id'];
$url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" . $app_id . "&redirect_uri=" . $redirect_url . "&response_type=code&scope=snsapi_base&state=0#wechat_redirect";
header("Location:{$url}");
die;
}
/**
* 微信回调地址,以获取openid
* @param Request $request
* @author tuojinxin
*/
public function get_open_id1(Request $request)
{
/*$module = $request->param('module');
$controller = $request->param('controller');
$action = $request->param('action');*/
$app_id = Config::get('sdkparam.wxmp')['app_id'];
$app_secret = Config::get('sdkparam.wxmp')['app_secret'];
$code = $request->param('code');
//第一步:取全局access_token
$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$app_id}&secret={$app_secret}";
$token = $this->get_json($url);
//第二步:取得openid
$oauth2Url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid={$app_id}&secret={$app_secret}&code={$code}&grant_type=authorization_code";
$oauth2 = $this->get_json($oauth2Url);
//第三步:根据全局access_token和openid查询用户信息
$access_token = $token["access_token"];
$openid = $oauth2['openid'];
$get_user_info_url = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=$access_token&openid=$openid&lang=zh_CN";
$userinfo = $this->get_json($get_user_info_url);
print_r($userinfo);
}
protected function get_json($url)
{
$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);
return json_decode($output, true);
}
小程序开发实例
$jsCode = $_REQUEST['code'];
$url = "https://api.weixin.qq.com/sns/jscode2session?appid={$this->appId}&secret={$this->appSecret}&js_code={$jsCode}&grant_type=authorization_code";
$result = file_get_contents($url);
var_dump($result);
注:code是前端传过来的。
前端代码:
wx.login({
success (res) {
if (res.code) {
//发起网络请求
wx.request({
url: 'https://XXX.cn/test/wx_send/getWxUser',
data: {
code: res.code
}
})
} else {
console.log('登录失败!' + res.errMsg)
}
}
})