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

网页授权
应用 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");
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 微信小程序中,map(地图)组件可以显示地图并标注多个地点。标注多个地点的方法如下: 1. 在小程序后台管理中心中,进入“小程序设置”页面,找到“服务设置”菜单,在“开发者设置”中选择“获取经纬度”选项,并填写自己的域名。 2. 在小程序的js文件中,调用API获取当前位置的经纬度,然后在地图上以标志或图标的形式显示出来,例如: wx.getLocation({ type: 'gcj02', success: function(res) { var latitude = res.latitude var longitude = res.longitude wx.openLocation({ latitude: latitude, longitude: longitude, scale: 18 }) } }) 3. 要标注多个地点,在小程序的js文件中使用markers属性添加标记点,例如: Page({ data: { markers: [{ id: 1, latitude: 23.099994, longitude: 113.324520, name: 'T.I.T 创意园' }, { id: 2, latitude: 23.099840, longitude: 113.327529, name: '华南理工大学' }, { id: 3, latitude: 23.110994, longitude: 113.339512, name: '番禺区' }] } }) 4. 在map(地图)组件中使用markers属性来展示多个标记点,例如: <map markers="{{markers}}" /> 以上就是微信小程序中map组件标注多个地点的方法。通过这种方法,用户可以在小程序中方便地查看多个地点的地理位置,为小程序的使用者提供更便捷的服务。 ### 回答2: 微信小程序中的map组件可以用来标注多个地点。标注地点的方法如下: 1. 在地图上找到第一个要标注的地点,将其坐标记录下来。 2. 在小程序中添加一个map组件,设置其地图的中心坐标为第一个要标注的地点的坐标。 3. 在小程序中添加一个marker(标记)组件,将其坐标设置为第一个要标注的地点的坐标,并设置相应的图标和标记文字。 4. 重复上述步骤,将所有要标注的地点都添加到地图上,每一个地点对应一个marker(标记)组件。 5. 根据需要,可以进一步设置marker(标记)的点击事件,以便让用户查看更多地点信息或进行相关操作。 以上就是在微信小程序中通过map组件标注多个地点的简单方法。需要注意的是,如果要标注的地点较多,可能会对小程序的性能产生一定影响,因此需要合理使用标注功能,避免过多、过于密集的标记。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值