PHP获取微信授权信息

    public function wechatAuth()
    {
        //授权登录基于oauth2.0
        //微信授权H5网页移动应用在手机端打开必须申请公众号
        //第一步与微信交互换取code
        $pid = $_GET['pid'];//自定义参数放到state中 此处传入二维码的上级id
		//应用Appid
        $appid = "";
        $toredirect = urlencode("http://xyp.pingtouge9.com/php/home/login.php?path=wechatRegister");//回调地址 对URL编码
        //此处的scope使用时应该注意
        //如果是微信公众号获取微信授权信息scope=snsapi_userinfo或者scope=snsapi_base(静默授权,只能拿到openid,不需要用户同意)
        //如果是微信网页移动应用授权scope=snsapi_login
        header("Location:https://open.weixin.qq.com/connect/oauth2/authorize?appid=" . $appid . "&redirect_uri=" . $toredirect . "&response_type=code&scope=snsapi_userinfo&state=" . $pid . "#wechat_redirect");
    }

    //微信扫码回调地址
    public function wechatRegister()
    {
        //第二步使用code换取access_token
        //$code是回调的时候地址上带的 只需要get方式接收就可以了
        $code = $_GET["code"];
        //获取自定义参数,state用于传递自己的自定义参数
        $pid = $_GET["state"];
        $appid = "";//应用Appid
        $appSecret = "";//应用密钥
        $openurl = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=$appid&secret=$appSecret&code=$code&grant_type=authorization_code";
        $globalaccesObj = json_decode(curlGet($openurl));
        //第三步获取微信用户详细信息
        $userUrl = "https://api.weixin.qq.com/sns/userinfo?access_token=" . $globalaccesObj->access_token . "&openid=" . $globalaccesObj->openid . "&lang=zh_CN";
        $wechatUserInfo = json_decode(curlGet($userUrl));//获取到微信基本用户
        $wechatUserInfo = to_array($wechatUserInfo);
        **//如果您的返回信息没有unionid,那就请先去将本应用绑定微信开放平台**
        //TODO 业务逻辑
    }
    //用到的另外两个函数
    //php get请求
	function curlGet($url, $method = 'get', $data = '') {
	    $ch = curl_init ();
	    $header = "Accept-Charset: utf-8";
	    curl_setopt ( $ch, CURLOPT_URL, $url );
	    curl_setopt ( $ch, CURLOPT_CUSTOMREQUEST, strtoupper ( $method ) );
	    curl_setopt ( $ch, CURLOPT_SSL_VERIFYPEER, FALSE );
	    curl_setopt ( $ch, CURLOPT_SSL_VERIFYHOST, FALSE );
	    curl_setopt ( $ch, CURLOPT_HTTPHEADER, $header );
	    curl_setopt ( $ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)' );
	    curl_setopt ( $ch, CURLOPT_FOLLOWLOCATION, 1 );
	    curl_setopt ( $ch, CURLOPT_AUTOREFERER, 1 );
	    curl_setopt ( $ch, CURLOPT_POSTFIELDS, $data );
	    curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, true );
	    $temp = curl_exec ( $ch );
	    // 释放curl句柄
	    curl_close ( $ch );
	
	    return $temp;
	}
	function to_array($obj){
	    // 定义空数组
	    $data = array();
	    // 循环遍历对象,对数组赋值
	    foreach ($obj as $key => $value) {
	        $data[$key] = $value;
	    }
	    // 打印数组
	    return $data;
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值