1、前置条件
A: 公众号已认证(本案例使用的是服务号)
B: 网页授权域名已正确配置 (https://mp.weixin.qq.com/cgi-bin/settingpage?t=setting/function&action=function)
2、获取code
$indexUrl = Yii::$app->request->getAbsoluteUrl();
$auth_url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" . $wxAppId
. "&redirect_uri=" . urlencode($indexUrl)
. "&response_type=code&scope=snsapi_userinfo&state=" . $state . "#wechat_clientstate";
header("Location: " . $auth_url);
3、获取access_token
$code = $_GET["code"];
$client = new Client();
$url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" . $wxAppId
. "&secret=" . $wxAppSecret
. "&code=" . $code
. "&grant_type=authorization_code";
$response = $client->get($url);
$rs1 = $response->getBody()->getContents();
4、获取userinfo
$access_token = $rs1["access_token"];
$openid = $rs1["openid"];
$url2 = "https://api.weixin.qq.com/sns/userinfo?access_token=" . $access_token . "&openid=" . $openid . "&lang=zh_CN";
$response = $client->get($url2);
$rs2json = $response->getBody()->getContents();
$rs2 = json_decode($rs2json, true);