多个域名使用微信获取用户信息的解决办法

本文介绍了两种在多个域名下使用微信获取用户信息的方法。对于网页授权,强调需配置主域名A,提供方式一和方式二的操作步骤。而对于jssdk获取,因限制最多绑定3个域名,同样给出了主应用A和其他应用的处理建议。
摘要由CSDN通过智能技术生成
网页授权
应用 A  :a.com
其他应用:b.com,c.com ...


一、网页授权 

注意授权域名 写主域名A 的域名地址

1. 方式一

   主应用 A 获取用户信息 并缓存
   其他应用 通过 返回的唯一标识 来调用主应用的接口 获取信息


   1) 跳转A应用 url?redirect_uri=外部uri
   2) 缓存外部uri
   3) 跳转微信授权url?redirect_uri=当前uri
   4) 微信授权完成 获取code
      根据code 获取到用户所有信息 并用
      key(code,userinfo) 格式缓存
   5) 跳回 外部uri 并携带参数 code
   6) 外部应用 根据code 向A应用请求接口

      取到用户信息 

主应用 A---------------------------------------

/**
	 * 入口文件
	 */
	public function wysq(){

		$this->session->set_userdata('redirect_uri',$this->input->get('redirect_uri'));
		
		$array	=	array(
		    'appid'			=>$this->_appid,
		    'redirect_uri'	=>'http://'.$_SERVER['HTTP_HOST'].'/home/api/oauth',
		    'response_type'	=>'code',
		    'scope'			=>'snsapi_userinfo',//snsapi_base ,snsapi_userinfo
		    'state'			=>'state'
		);
		$list	=	http_build_query($array);
		$url = 'https://open.weixin.qq.com/connect/oauth2/authorize?'.$list.'#wechat_redirect';
		echo '<script> location.href="'.$url.'"</script>';exit;

	}

	public function oauth(){
 	    $code = $this->input->get('code');
            if($code){
		$this->curl->options(array(CURLOPT_SSL_VERIFYPEER => false, CURLOPT_SSL_VERIFYHOST => false));
		$userinfo 	=  $this->curl->simple_get("https://api.weixin.qq.com/sns/oauth2/access_token?appid=$this->_appid&secret=$this->_appsecret&code=$code&grant_type=authorization_code");
		$user	=	json_decode($userinfo);
		$access_token =  $user->access_token;
		$openid 	  =  $user->openid;

                //这里判断用户是否存在啊
                if($openid !== ''){
                    $this->curl->options(array(CURLOPT_SSL_VERIFYPEER => false, CURLOPT_SSL_VERIFYHOST => false));
                    $baseinfo 	  = $this->curl->simple_get('https://api.weixin.qq.com/sns/userinfo?access_token='.$access_token.'&openid='.$openid.'&lang=zh_CN');
                    $info  		  = json_decode($baseinfo);

		    if(empty($info)){
		         die('微信返回有误!!!');
		    }
		    
		    //coding here... 将info 存入缓存 key $code : $info

                    $gouri = $this->session->userdata('redirect_uri');
                    $gouri = stripos($gouri, '?') === false ? $gouri.'?code='.$code:$gouri.'&code='.$code;
                    header("Location:".$gouri);
		    exit;
            	}else{
            	    die('微信返回有误!!!');
                }
	    }else{
		die('微信返回有误!!!');
	    }
	}

	//获取用户信息接口
	public function getinfo(){
	    header("Content-type: application/json");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值