微信web用户授权

以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();
    }
}

猜你喜欢

转载自blog.csdn.net/u014391889/article/details/83141936
今日推荐