微信跳转第三方网页,并获取用户的信息

本文详细介绍了如何实现微信跳转到第三方网页并获取用户信息的过程,包括修改微信测试账号的授权设置,提供相应链接给用户,以及在后端通过code换取access_token和用户信息的代码实现。

第一步:将测试帐号的功能服务 网页授权获取用户基本信息 进行修改,域名即为第三方页面的域名。



第二步:公众号向用户提供链接

我的链接为 http://xxx.top/vote/index.php

第三步:编写代码

在vote下home模块index控制器下有如下方法

  public function index(){
        $appid = 'wx486ddaf6ea519b89';
        $redirect_uri = urlencode('http://xxx.top/vote/index.php/home/index/validUser');//将字符串以url编码
        $url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=$appid&redirect_uri=$redirect_uri&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect";
        header("Location:".$url);
    }

此方法将调用validUser方法,用户同意授权,获取code

 public function validUser(){
    	$code = $_GET['code'];//预定义的$_GET变量用于收集来自method="get"
    	// echo $code;exit;
        $json = $this->access_token($code);
        $arr = json_decode($json,true);
        $arr = array_change_key_case($arr, CASE_LOWER);
        // print_r($arr);exit;
    	if (isset($arr['access_token']) && isset($arr['openid'])) {
    		$result = $this->getUserInfo($arr['access_token'],$arr['openid']);
            print_r($result);
            // $this->redirect('fans/index',array('opend'=>$userinfo['opendid']));
    	}else{
            echo "获取access_token失败".$json;
        }

    }

access_token方法如下,通过code换取网页授权access_token

private function access_token($code){
        $appid = "wx486ddaf6ea519b89";
        $appsecret = "c57cc1cc7a3a35ea7a65b27e238a36c3";
        $url ="https://api.weixin.qq.com/sns/oauth2/access_token?appid=$appid&secret=$appsecret&code=$code&grant_type=authorization_code";
        $ret = https_request($url);
        return $ret;
    }

接下来获取用户信息

 //获取用户信息
    private function getUserInfo($access_token,$openid){
        $userinfo_url = "https://api.weixin.qq.com/sns/userinfo?access_token=$access_token&openid=$openid";
        $userinfo_json = https_request($userinfo_url);
        $userinfo_array = json_decode($userinfo_json,true);

        array_change_key_case($userinfo_array, CASE_LOWER);
        return $userinfo_array;//返回的是用户的信息
    }

其中用到的https_request方法是在common控制器下function.php中的函数。

function https_request($url){
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);       
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    $data = curl_exec($curl);
    if (curl_errno($curl)) {
    	return 'ERROR'.curl_error($curl);

    }
    curl_close($curl);
    return $data;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值