• 开发场景: 在微信客户端打开某个网页可以获取到用户的openId。 获取用户openid步骤如下:参考微信公众平台开发文档 第一步:引导微信公众平台的用户打开如下链接 ...response_t...

    开发场景:
    在微信客户端打开某个网页可以获取到用户的openId。

    获取用户openid步骤如下:参考微信公众平台开发文档

    第一步:引导微信公众平台的用户打开如下链接

    https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
    参数说明
    
    参数               是否必须   说明
    appid               是      公众号的唯一标识
    redirect_uri        是      授权后重定向的回调链接地址, 请使用 urlEncode 对链接进行处理
    response_type       是      返回类型,请填写code
    scope               是      应用授权作用域,snsapi_base (不弹出授权页面,直接跳转,只能获取用户openid),     snsapi_userinfo (弹出授权页面,可通过openid拿到昵称、性别、所在地。并且, 即使在未关注的情况下,只要用户授权,也能获取其信息 )
    state               否      重定向后会带上state参数,开发者可以填写a-zA-Z0-9的参数值,最多128字节
    #wechat_redirect    是      无论直接打开还是做页面302重定向时候,必须带此参数
    参考链接(请在微信客户端中打开此链接体验):
    scope为snsapi_base
    https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx520c15f417810387&redirect_uri=https%3A%2F%2Fchong.qq.com%2Fphp%2Findex.php%3Fd%3D%26c%3DwxAdapter%26m%3DmobileDeal%26showwxpaytitle%3D1%26vb2ctag%3D4_2030_5_1194_60&response_type=code&scope=snsapi_base&state=123#wechat_redirect
    scope为snsapi_userinfo
    https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxf0e81c3bee622d60&redirect_uri=http%3A%2F%2Fnba.bluewebgame.com%2Foauth_response.php&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect

    注意事项:
    1、redirect_uri 授权后重定向的回调链接地址, 请使用 urlEncode 对链接进行处理。进行urlEncode处理戳这里
    2、appid必须是服务号的开发者ID(订阅号是没有权限通过网页授权来获取用户基本信息的),并且该服务号开通了微信网页授权的功能,且配置了微信授权回调域名,这样才能获取到code码用于进一步获取用户openid。(微信公众号的区分–服务号和订阅号有何不同?
    如下图:
    这里写图片描述
    这里写图片描述

    第二步:在重定向的回调页面(redirect_uri)里获取code,并请求openid

        // 获取code   
        function getQueryString(name) {
            var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
            var r = window.location.search.substr(1).match(reg);
            if (r != null) return unescape(r[2]); return null;
            }
        var code = getQueryString("code");  
        alert(code)   // 获取code值可以在客户端打开链接的时候alert出来查看
        // 请求openid
        $.ajax({ 
          async: false, 
          url: "http://api.xxx.com/member/platformDict/getOpenId", //后端提供的获取openid的接口
          type: "GET", 
          data: {code:code}, //传递本页面获取的code到接口,以便获取openid
          timeout: 5000, 
          success: function (result) { 
            // 根据后台接口返回的参数 result里应该会包含openid,就可以获取到了
          }, 
          error: function (jqXHR, textStatus, errorThrown) { 
              alert(textStatus); 
          } 
      })
    </script>

    code

    展开全文
  • 微信公众号网页开发

    2017-08-22 13:31:23
    公司最近有个新的需求,就是在...说道微信开发几乎所有的功能都围绕一个核心,那就是access_token。access_token的时效为7200秒也就是两个小时,我在项目中写了一个定时器每半个小时获取一次写入到static变量当中(之前

    公司最近有个新的需求,就是在微信公众号里可以操作工单。开始服务,结束服务分别上传对应的图片,获取当前服务人员操作时的地理位置。其中一些公司的需求我就不在这里详细说了,主要说说微信公众号开发。

    说道微信开发几乎所有的功能都围绕一个核心,那就是access_token。access_token的时效为7200秒也就是两个小时,我在项目中写了一个定时器每半个小时获取一次写入到static变量当中(之前写1.5小时获取一次经常出现access_token失效的情况,access_token每天可以获取2000次。

    如果有对特定的关注用户有操作,比如说提示有新的工单给服务人员,这时一定会用到关注用户的openid,所以一般在用户使用微信公众号之前会获取他的openid,通常也会有一个绑定动作。(获取openid需要用code, 一般会先获取code再获取openid,由于是去腾讯服务器去获取时间会很久,一般第一次访问公众号里的页面打开会很慢,建议单跑一个线程获取。)

    在前面有说道上传图片和获取定位信息的功能,这里就要使用微信的js-sdk了,微信会提供很多已有的js方法供开发人员使用,详情可以参考公众号里的开发文档。在使用微信提供的sdk的时候需要进行签名认证。并且只能在公众号管理平台 - js接口安全域名中配置好的域名下使用,感觉这样很不方便测试。

    sdk签名前端:

    需要获取到当前页面的地址传到后台用以生成认证码,如果包含特殊字符需要在页面上做转义。


    SDK签名后台:



         需要用到access_token 和 ticket  ,ticket 可以使用access_token 作为参数获取,最后使用 access_token、ticket、时间戳、随机字符、url 根据算法获取出认证码,ticket 获取地址,signature中获取认证码的算法开发文档中都有。认证成功在开启debug调试下会弹出ok的提示,如果不是在js安全接口中配置的域名下测试会提示invalid url domain的提示也是成功的。

    开发当中遇到的问题,在我遇到的问题当中我觉得比较麻烦的大概有两个,第一个是上传图片的方式,最开始我使用的是 getLocalImgData 方法 ,这个方法会获根据chooseImage 返回的localid 把图片转成base64码,在前端通过dataurl展示,存在数据的clob类型的字段里。后来发现这么做会有兼容性问题,ios的话对微信浏览器内核版本有要求,个别用户用的比较旧安卓机也不支持,还有就是clob存取需要做特殊处理,base64码又过于大会导致页面加载慢。最终我使用的方法是chooseImage 后使用uploadImage把图片上传到微信服务器上用返回的serverid 传到后台,在其他信息入库的同时新启动一个线程(上传下载比较耗费时间)用serverid去微信服务器上下载图片写到自己的服务器上,然后上传到ftp。

    使用这种方法页面上展示ftp的地址解决了兼容性的问题。但是遇到了我前文说到的第二个问题,微信项目是通过httpclent请求到api服务完成入库操作的,下载上传图片也是在api服务中,这就需要把access_token也作为参数传递到api服务中,在我刚刚开发完这种上传方法测试的时候上传是没有问题的,后来遇到了上传图片失败的情况,上传到服务器失败的图片统一为110bytes,后来通验证发现是在微信服务器下载图片失败,在上网搜索时看到了有人说可能是access_token失效导致的。解决办法是缩短了定时获取微信access_token时间,保险起见在下载图片时验证图片的流的大小,如果过小就认为是下载失败:


    会去微信项目中重新获取access_token再次下载。


    总结:微信网页开发毕竟是移动端在使用,要考虑到手机机型的兼容问题。微信开发用到的很多票据都是要去微信服务器上获取,一般会花费一点时间,导致有时候打开页面慢。




    展开全文
  • 微信小程序页面间的数据传递是非常重要、也很常用到的知识。 你可能需要传一个数据或者两个数据或者更多。经常都是单独一个个的传递,比如通过链接进行传递: url: '../index/index?id='+id 多个数据: url: '../...

    微信小程序页面间的数据传递是非常重要、也很常用到的知识。

    你可能需要传一个数据或者两个数据或者更多。经常都是单独一个个的传递,比如通过链接进行传递:

    url: '../index/index?id='+id
    

    多个数据:

    url: '../index/index?id='+id+'&openid='+openid
    

    如果还有第三个以此类推。

    这是一个很容易使用的方法。

    但现在可能你遇到的问题是,我想传递一个数据对象,里面包含的是一组数据。
    例如:
    在这里插入图片描述
    例如传递这一条数据对象,该怎么办呢?可想而知,再使用上面的那些方法已经不可用了,否则我也不对写这篇文章。

    那么,就让我来帮你解决这个问题吧:

    url: '../index/index?massIfo='+JSON.stringify(res.data)
    

    没错,就是这样写,将你的数据对象转化为json格式。
    在接收次数据页面:

    JSON.parse(options.massIfo)
    

    完美!轻松将对象数据进行页面间的传递!

    如有问题可在下方留言,看到之后会在第一时间回答~

    欢迎关注公众【夜来疏影】

    在这里插入图片描述

    展开全文
  • jssdk就是在微信页面里调用手机设备(如相机,重力感应等)的一套javascript代码. 题外话,做app时,在网页里调用手机设备,比较出名的是cordova,大家可以度娘一下,练练手.不过我嫌这玩意麻烦,就自己写了套,是从...

           jssdk就是在微信页面里调用手机设备(如相机,重力感应等)的一套javascript代码.

            题外话,做app时,在网页里调用手机设备,比较出名的是cordova,大家可以度娘一下,练练手.不过我嫌这玩意麻烦,就自己写了套,是从WebViewJavascriptBridge: https://github.com/marcuswestin/WebViewJavascriptBridge里面改过来的,原始WebViewJavascriptBridge只支持ios,我改为也支持android了,同时优化了一下代码.大家如果有需要,可以找我(QQ:40678884).这玩意,其实就是在页面和手机之间打个洞,例如页面提供个javascript函数,让iphone的ios代码调用(允许有参数和返回值);或者反过来ios提供个函数让javascript调用.

            言归正传,使用jssdk也不难.

    1).绑定域名.

            微信公众号官方后台管理->公众号设置->功能设置->JS接口安全域名..注意,这里和网页授权绑定域名一样,也是不带http,https,并且不需要子目录.例如我要使用jssdk的页面为http://szuzsq.tunnel.qydev.com/weixin/sample.php,则这里我的域名是szuzsq.tunnel.qydev.com

     

    2).引入JS文件
            在需要调用JS接口的页面引入如下JS文件http://res.wx.qq.com/open/js/jweixin-1.0.0.js,如需使用摇一摇周边功能请引入http://res.wx.qq.com/open/js/jweixin-1.1.0.js.

    例如,我的代码如下:

     

    <script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>

     

     


    3).下载官方的示例代码:

    http://demo.open.weixin.qq.com/jssdk/sample.zip

    在代码里提供了几种语言的实现.我使用php..里面的sample.php我改了一下,就是我要调用手机设备了.,代码如下:

     

    <?php
    //文件名: http://szuzsq.tunnel.qydev.com/weixin/sample.php
    
    error_reporting(E_ALL || ~E_NOTICE);
    header("Content-type:text/html; charset=utf-8");
    require_once "jssdk.php";
    $jssdk = new JSSDK("wxf649ff600f132a41", "5baf64562b15223f919165d083f9b889");
    $signPackage = $jssdk->GetSignPackage();
    ?>
    
    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <!--因为在手机中,所以添加viewport-->
    <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
    <title>微信测试</title>
    </head>
    <body>
    	<button id="weixin" style="display: block; margin: 2em auto">微信接口测试</button>
    	<script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
    	<script>
    		wx.config({
    			debug: true, //调试阶段建议开启
    			appId: '<?php echo $signPackage["appId"]; ?>',
    			timestamp: '<?php echo $signPackage["timestamp"]; ?>',
    			nonceStr: '<?php echo $signPackage["nonceStr"]; ?>',
    			signature: '<?php echo $signPackage["signature"]; ?>',
    			jsApiList: [
    			//所有要调用的API都要加到这个列表中,这里以图像接口为例
    			"chooseImage", "previewImage", "uploadImage", "downloadImage"]
    		});
    		var btn = document.getElementById('weixin');
    		wx.ready(function() {
    			//在这里调用API
    			btn.onclick = function() {
    				wx.chooseImage({
    					success: function(res) {
    						var localIds = res.localIds;
    						//返回选定照片的本地ID列表,localId可以作为img标签的src属性显示图片
    					}
    				});
    			}
    		});
    	</script>
    </body>
    </html>

     

     

     

     

     

     

    4).在我这边的jssdk.php代码里,提交get请求的代码,有些问题.开启了ssl验证,我就把它关了(即改为和我在utils.php里的curl_http_get代码一样).大家酌情考虑.代码如下:

     

     

    	private function httpGet($url) {
    		//$curl = curl_init();
    		//curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    		//curl_setopt($curl, CURLOPT_TIMEOUT, 500);
    		//// 为保证第三方服务器与微信服务器之间数据传输的安全性,所有微信接口采用https方式调用,必须使用下面2行代码打开ssl安全校验。
    		//// 如果在部署过程中代码在此处验证失败,请到 http://curl.haxx.se/ca/cacert.pem 下载新的证书判别文件。
    		//curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);
    		//curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, true);
    		//curl_setopt($curl, CURLOPT_URL, $url);
    		//$res = curl_exec($curl);
    		//curl_close($curl);
    		//return $res;
    
    		$curl = curl_init();
    		curl_setopt($curl, CURLOPT_URL, $url);
    		curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); //将curl会话获取的信息以字符串返回,而不是直接输出
    		curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); //禁止curl验证对等证书(peer's certificate)
    		curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0); //不检查服务器SSL证书中是否存在一个公用名(common name)
    		curl_setopt($curl, CURLOPT_POST, false); //发送 GET请求.类型为:application/x-www-form-urlencoded
    		//curl_setopt($curl, CURLOPT_POSTFIELDS, $data); //PHP的curl支持通过给此选项传递关联数组(而不是字符串)来生成multipart/form-data的POST请求
    		$result = curl_exec($curl);
    		if($errno = curl_errno($curl))
    			$result = "$errno:" . curl_error($curl);
    		curl_close($curl);
    		return $result;
    	}


    以下是效果图:

     

     

     

     

     

     

     

    展开全文
  • 在学习网页授权之前,我们先来了解下这次的需求:我们的应用中有一个用来显示个人信息的页面,当微信用户在微信app中打开这个页面,希望可以获取到该用户的头像,昵称等信息,并显示到该页面中。如下图所示:如果...

    作者:陈惠,叩丁狼教育高级讲师。原创文章,转载请注明出处。

    在学习网页授权之前,我们先来了解下这次的需求:

    我们的应用中有一个用来显示个人信息的页面,当微信用户在微信app中打开这个页面,希望可以获取到该用户的头像,昵称等信息,并显示到该页面中。如下图所示:

    图片.png

    如果用户在微信客户端中访问第三方网页(我们的应用),可以通过微信网页授权机制,来获取用户的基本信息(包括昵称、性别、城市、国家等,注意:手机,QQ,邮箱通过微信网页授权是无法获取的)。利用这些用户信息,我们可以实现一些业务逻辑,比如来源统计、帐号绑定、用户身份鉴权等功能。

    OAuth2.0

    微信的网页授权是基于OAuth2.0协议的,百科上对OAuth的介绍是:OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如头像,个人信息等),而无需将用户名和密码提供给第三方应用;而OAuth2.0则是OAuth协议的升级版,但并不兼容老版本。

    实际上,现在很多企业都使用到OAuth2.0,比如支付宝,微信,QQ授权登录等等。

    授权流程

    微信开发文档中引导我们操作的流程是:

    图片.png

    更详细的流程如下,主要是利用一个code授权码来进行授权:

    图片.png

    AppID,AppSecret,OpenID,Access_Token这些在之前的文章都已经介绍过了,有需要的参考开发教程(一),开发教程(二),开发教程(四)文章。

    特别注意:
    1.本文中用到的Access_Token是专属于网页授权而使用的Access_Token凭据,与之前其他接口用的Access_Token凭据是不同的,所以我们要通过另外一个接口来获取网页授权使用的Access_Token。

    2.网页授权分两种scope授权作用域
    (1)scope为snsapi_base的网页授权,是用来获取进入页面的用户的openid的,并且是静默授权并自动跳转到回调页的,也就是说用户完全感觉不到你在获取他的信息,但只能获取openid。
    (2)scope为snsapi_userinfo的网页授权,是用来获取用户的基本信息的(包括openid,头像,昵称,城市,性别等),这种授权需要用户手动同意,无须关注公众号,就可在用户同意后获取该用户的基本信息。

    实现步骤

    注意:服务号或者测试号才有网页授权的功能权限

    一:安装微信web开发者工具,待会用于调试页面
    下载地址:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1455784140

    二:配置授权域名,设置该域名拥有网页授权的权限(如果不设置,就没有权限使用网页授权)。

    在接口权限列表找到网页授权,点修改按钮:
    图片.png

    把域名填入到输入框中:

    图片.png

    确认保存即可。

    三:准备好一个页面,用于显示用户的详细信息
    我的页面访问地址为http://huihui.mynatapp.cc/person.do,是通过controller请求转发到个人信息页面。

    代码:

        @RequestMapping("person")
        public String person(){
            return "person";
        }
    

    暂时的效果如图所示,没有显示具体的用户信息:
    图片.png

    四:拼接网页授权的url链接,引导用户打开授权界面
    格式如下:https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect

    现在把我们具体的参数填上:
    https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx59687be81dd3d388&redirect_uri=http://huihui.mynatapp.cc/person.do&response_type=code&scope=snsapi_userinfo#wechat_redirect

    参数介绍:
    appid: 公众号的唯一标识(从公众号页面中拷贝)
    redirect_uri: 回调地址(现在用户打开的地址是open.weixin.qq.com的页面,页面中会提示用户是否同意授权,当用户同意授权之后,就会跳转到指定的回调地址上,也就是我们自己的页面)
    response_type: 返回类型,请填写code(关于网页授权的参数,统一填code即可)
    scope: 应用授权作用域(如之前介绍的两种授权作用域,填snsapi_base或者snsapi_userinfo)
    state: 重定向到回调地址后会带上state参数,开发者可以填写任意参数值(该参数不是必填,可传可不传,有些业务操作需要自定义参数就可以用上)
    #wechat_redirect:无论直接打开还是做页面302重定向时候,必须带此参数

    五:把地址拷贝到web开发者工具中,查看效果
    左边的视图出现了授权页面,这是因为我使用的是snsapi_userinfo授权作用域,所以需要用户同意授权,此时用户点击确认登录后即可重定向到回调地址。
    网页授权页面.png

    个人信息页面.png

    可以看到,重定向到回调地址后,url上有两个参数,一个是code,这是一个授权码,有了它之后我们才能做后面的操作,另一个是state,就是之前说的可以自定义参数传递,因为我没有设置state所以这里是空。

    也可以使用手机来测试,用微信来打开链接,但微信的浏览器不易看出地址及参数的变化。

    六:通过code来获取网页授权专用的access_token凭据

    接口地址:https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

    在请求的时候,我们把appid,secret,code这三个参数设置进去即可。

    public class WeChatUtil {
        //公众号唯一标识
        public static final String APPID = "wx59687be81dd3d388";
        //公众号的appsecret
        public static final String APPSECRET = "d4624c36b6795d1d99dcf0547af5443d";
        //获取网页授权accessToken的接口
        public static final String GET_WEB_ACCESSTOKEN_URL = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code";
    
        /**
         * 获取网页授权的AccessToken凭据
         * @return
         */
        public static JSONObject getWebAccessToken(String code){
            String result = HttpUtil.get(GET_WEB_ACCESSTOKEN_URL.replace("APPID", APPID).replace("SECRET", APPSECRET).replace("CODE", code));
            JSONObject json = JSONObject.parseObject(result);
            return json;
        }
    

    若请求正确时返回的结果如下:

     { 
        "access_token":"ACCESS_TOKEN",
        "expires_in":7200,
        "refresh_token":"REFRESH_TOKEN",
        "openid":"OPENID",
        "scope":"SCOPE"
     }
    

    参数介绍:
    access_token:网页授权接口调用凭证,注意:此access_token与基础支持的access_token不同
    expires_in:access_token接口调用凭证超时时间,单位(秒)
    refresh_token:用户刷新access_token
    openid:用户唯一标识
    scope:用户授权的作用域

    注意:
    1.code作为换取access_token的票据,每次用户授权带上的code将不一样,code只能使用一次,5分钟未被使用自动过期。
    2.access_token作为换取用户信息的票据,有效期为2个小时,当access_token超时后,可以使用refresh_token进行刷新,refresh_token有效期为30天,当refresh_token失效之后,需要用户重新授权。

    七:通过access_token来获取用户的基本信息
    接口地址:https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN

        //获取用户信息的接口
        public static final String GET_USERINFO_URL = "https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN";
    
        /**
         * 获取用户信息
         *
         */
        public static JSONObject getUserInfo(String accessToken,String openId){
            String result = HttpUtil.get(GET_USERINFO_URL.replace("ACCESS_TOKEN", accessToken).replace("OPENID",openId));
            JSONObject json = JSONObject.parseObject(result);
            return json;
        }
    

    若请求正确时返回的结果如下:

    {   
       "openid":" OPENID",
       "nickname": "NICKNAME",
       "sex":"1",
       "province":"PROVINCE",
       "city":"CITY",
       "country":"COUNTRY",
       "headimgurl": "http://thirdwx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/46",
       "privilege":[ "PRIVILEGE1" "PRIVILEGE2"  ],
       "unionid": "o6_bmasdasdsad6_2sgVt7hMZOPfL"
    }
    

    参数介绍:
    openid:用户的唯一标识
    nickname :用户昵称
    sex:用户的性别,值为1时是男性,值为2时是女性,值为0时是未知
    province:用户个人资料填写的省份
    city:普通用户个人资料填写的城市
    country:国家
    headimgurl:用户头像,最后一个数值代表正方形头像大小(有0、46、64、96、132数值可选,0代表640*640正方形头像),用户没有头像时该项为空。若用户更换头像,原有头像URL将失效。
    privilege:用户特权信息,json 数组,如微信沃卡用户为(chinaunicom)
    unionid:只有将公众号绑定到微信开放平台帐号后,才会出现该字段。

    八:整合Controller调用方法

        @RequestMapping("person")
        public String person(String code,Model model){
            if(code!=null) {
                //1.通过code来换取access_token
                JSONObject json = WeChatUtil.getWebAccessToken(code);
                //获取网页授权access_token凭据
                String webAccessToken = json.getString("access_token");
                //获取用户openid
                String openid = json.getString("openid");
                //2.通过access_token和openid拉取用户信息
                JSONObject userInfo = WeChatUtil.getUserInfo(webAccessToken, openid);
                //获取json对象中的键值对集合
                Set<Map.Entry<String, Object>> entries = userInfo.entrySet();
                for (Map.Entry<String, Object> entry : entries) {
                    //把键值对作为属性设置到model中
                    model.addAttribute(entry.getKey(),entry.getValue());
                }
            }
            return "person";
        }
    

    为了便于理解,业务逻辑暂时写在controller中,实际开发时应抽取到业务层。

    九:页面获取model数据

                <div class="weui-cells mt5">
                  <div class="weui-cell ">
                    <div class="weui-cell__bd">
                      昵称
                    </div>
                    <div class="weui-cell__price">${nickname}</div>
                  </div>
                  <div class="weui-cell">
                    <div class="weui-cell__bd">
                      国家
                    </div>
                    <div class="weui-cell__price">${country}</div>
                  </div>
                  <div class="weui-cell">
                    <div class="weui-cell__bd">
                      所在城市
                    </div>
                    <div class="">${province} ${city}</div>
                  </div>
                  <div class="weui-cell weui-cell_access">
                    <div class="weui-cell__bd">
                      姓别
                    </div>
                    <div class="weui-cell__price">
                        <c:choose>
                            <c:when test="${sex==2}">
                                女
                            </c:when>
                            <c:when test="${sex==1}">
                                男
                            </c:when>
                        </c:choose>
                    </div>
                  </div>
    

    效果:

    图片.png

    从上图中已经看到头像,昵称,国家,城市,性别都已经从微信服务器获取到了,而手机,QQ,微信号这些内容属于用户比较隐私的内容,微信是不会提供给我们的,我们只能让用户进入页面自己去补充其他的信息。


    展开全文
  • C#微信开发

    2017-12-24 10:35:37
    C#开发微信门户及应用教程   作者:伍华聪   C#开发微信门户及应用(1)--开始使用微信接口 6 1、微信账号 6 2、微信菜单定义 7 3、接入微信的链接处理 8 4、使用开发方式创建菜单 14 5、我创建的菜单案例 17 C#...
  • 微信小程序开发中什么是事件?从事件的定义解释,事件是视图层到逻辑层的通讯方式。
  • java微信支付后端开发

    2018-07-05 18:27:21
    在上篇文章,已经介绍了微信支付的相关申请流程:点击打开链接下面是关于微信支付,后端代码。博主使用的是java。...发起微信统一下单接口(注:小程序支付、公众号支付需要获取用户openid)---&gt;对订单进行签...
  • 微信公众号主要有以下几个步骤 微信公众号的通讯机制 微信公众号简介 1.注册微信公众号 2.注册测试公众号 3.搭建微信本地调试环境 1)下载客户端natapp: 2)安装natapp: 4.微信公众号接入(校验签名) 第1步中...
  • 微信打开本地app

    2017-09-20 17:57:44
    微信打开本地APP最近需要实现一个需求:本地智能设备检测到事件后推送给服务器。
  • asp.net下微信网页授权

    2016-10-25 15:55:10
    微信网页授权我相信做微信开发的小伙伴都可能遇见过这样的问题1.我们要明白微信网页授权主要是用来做什么? 用户在微信客户端中访问第三方网页,公众号可以通过微信网页授权机制,来获取用户基本信 息, 进 而实现...
  •  对于前端开发而言,微信小程序因为其简单快速、开发成本低、用户流量巨大等特点,也就成了前端开发工程师必会的一个技能。   2.先看看小程序效果 (1)欢迎页     (2)首页:轮播头图,...
  • 首先请阅读微信JS-SDK说明文档,了解微信JS的相关说明。 根据官方的使用步骤,关键的有以下几步 绑定域名(很关键) 引入JS文件(很简单) 通过config接口注入权限验证配置(很重要) 通过ready接口处理成功验证...
  • * 2 第二步:通过code换取网页授权access_token * 3 第三步:刷新access_token(如果需要) * 4 第四步:拉取用户信息(需scope为 snsapi_userinfo) */ 第一部分:微信授权获取基本信息的介绍 我们首先来看看...
  • 企业微信开发流程

    2018-08-30 11:03:38
    申请企业(企业corpid)==》添加部门人员(角色、标签)==》开启通讯录 根据通讯录应用corpid和corpsecret可以和本地数据库同步===》添加应用进行开发(AgentId和Secret)(根据企业id和应用secret获取access_token,...
  • 今天来说说所谓的微信公众号开发和填坑记录; 微信公众号:运行在微信终端的应用 (对于开发者来说比较爽的你只需考虑兼容微信浏览器,因为它是在微信内置浏览器环境下运行的) 微信公众号开发分为两部分:  一...
  • 主要用于在用户通过手机端微信访问第三方H5页面时获取用户的身份信息(openId,昵称,头像,所在地等。。)可用来实现微信登录、微信账号绑定、用户身份鉴权等功能。 &nbsp; 一、开发前的准备: 1、需要有一个...
  • 自从微信小程序支持内嵌网页之后,呼声高涨得不得了。的确,这个确实让我开发我们公司的小程序高效了很多,主要是可以引入现有的功能完整的普通网页。需求是这样子的:小程序启动授权等操作成功后直接跳转到内嵌网页...
  • 微信小程序与云开发

    2019-08-02 08:42:33
    微信小程序基础概念 小程序云开发的三大基础能力:云数据库、云函数、云存储 Java、NodeJS、JavaScript、HTML5、CSS3、VueJs、ReactJs、前端工程化、前端架构 小程序开发入门基础,开发流程,云开发的使用,独自完成...
  • 事件 什么是事件 事件是视图层到逻辑层的通讯方式。 事件可以将用户的行为反馈到逻辑层进行处理。 事件可以绑定在组件上,当达到触发事件,就会执行逻辑层中对应的事件处理函数。 事件对象可以携带额外信息,如...
1 2 3 4 5 ... 20
收藏数 7,998
精华内容 3,199