以thinkphp3.2为例
步骤:1.用户授权->2.获得CODE->3.根据CODE获取openid->4.根据openid获取用户信息
1.用户初次访问页面
class IndexController extends Controller {
public function index(){
header('Location: https://open.weixin.qq.com/connect/oauth2/authorize?appid=你自己的APPID&redirect_uri=授权后跳转的页面地址(我这里跳到pro这个控制器中)&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect');
}
}
2.获取信息
<?php
namespace Home\Controller;
use Think\Controller;
class ProController extends Controller {
public function index(){
//2.通过授权获取code
if(isset($_GET['code'])){
$code = $_GET['code'];
}else{
$this->redirect('index/index');
}
//3.根据CODE获得access_token和openid
$arccess_token_url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=".C('appid')."&secret=".C('APPSECRET')."&code=".$code."&grant_type=authorization_code";
$arccess_token_json = file_get_contents($arccess_token_url);
$arccess_token_array = json_decode($arccess_token_json, true);
$access_token = $arccess_token_array['access_token'];
$openid = $arccess_token_array['openid'];
if(!$openid){
$this->redirect('index/index');
}
//4.根据access_token和openid获取用户信息
$userinfo_url = "https://api.weixin.qq.com/sns/userinfo? access_token=".$access_token."&openid=".$openid."&lang=zh_CN";
$userinfo_json = file_get_contents($userinfo_url);
$userinfo_array = json_decode($userinfo_json, true);
$data['openid'] = $userinfo_array['openid'];
$data['sex'] = $userinfo_array['sex'];
$data['nickname'] = $userinfo_array['nickname'];
$data['province'] = $userinfo_array['province'];
$data['city'] = $userinfo_array['city'];
$data['headimgurl'] = $userinfo_array['headimgurl'];
//5.数据传输到前台
$this->userinfo = $data;
$this->display();
}
}