C#开发微信门户及应用(14)-在微信菜单中采用重定向获取用户数据

我曾经在系列文章中的《C#开发微信门户及应用(11)--微信菜单的多种表现方式介绍》中介绍了微信菜单里面的重定向操作,通过这个重定向操作,我们可以获取一个code值,然后获取用户的openID,进而就能获取到更多的用户信息,这个在会员信息的场景里面用的很多,本篇介绍在网站中迅速配置这样的菜单链接,并介绍如何在后台获取相关的用户信息,实现页面数据个性化的展现操作。

我们知道,微信的自定义菜单分为两大类,分别对应Click类型和View类型的,而重定向属于View类型的一种,如下所示。

1、微信重定向菜单的配置

微信重定向的菜单,就是通过传入一个地址参数,让微信服务器进行跳转,它的主要规则如下所示。

对于scope=snsapi_base方式的链接如下:

https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx3d81fc2886d86526&redirect_uri=http%3A%2F%2Fwww.iqidi.com%2Ftestwx.ashx&response_type=code&scope=snsapi_base&state=123#wechat_redirect

而对于scope=snsapi_userinfo方式的链接如下:

https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx3d81fc2886d86526&redirect_uri=http%3A%2F%2Fwww.iqidi.com%2Ftestwx.ashx&response_type=code&scope=snsapi_userinfo&state=123#wechat_redirect

这两个菜单链接主要就是对我们给定的链接地址进行UrlEncode处理,然后把它赋值给参数redirect_uri实现的。

由于链接地址比较长,如果每次需要在配置菜单的时候,都复制过来修改,非常不方便,我们可以在自定义菜单的配置界面里面,增加一个按钮功能,对内容进行处理,以便实现我们需要的地址转换,我的门户应用平台对自定义菜单的操作就是基于这个思路实现。

默认我们只需要填写一个需要重定向的url地址就可以了,如下所示。

如果需要配置成重定向的菜单链接地址,那么调用【转换重定向菜单】按钮操作,使用脚本函数进行转换就可以了,转换后的结果如下所示。

原来就是利用后台的javascript实现参数的URL转码,还需要获取后台的AppId,这样才能构造成完整的地址连接。

2、脚本转换操作的实现代码

前面说了,第一是需要实现URL转码,第二是获取后台的AppId,然后生成一个完整的URL就可以了。为了避免大家的重复研究,我把这部分代码贴出来一起学习下。

在使用前,我们还需要注意一个问题,就是重定向到指定页面后,这个页面会带有一个code的参数,这个参数非常重要,我们需要获取出来,当然也是通过javascript来获取对应的code参数了。

这个逻辑可以用一个脚本函数来实现,如下所示


        function getUrlVars(){
var vars = [], hash;
var hashes = window.location.href.slice(window.location.href.indexOf(‘?‘) + 1).split(‘&‘);
for(var i = 0; i < hashes.length; i++)
{
hash = hashes[i].split(‘=‘);
vars.push(hash[0]);
vars[hash[0]] = hash[1];
}
return vars;
}

定义了这个函数后,我们在重定向的页面里面,可以获取code参数的操作如下所示。


var code = getUrlVars()["code"];

先放下这些,我们先来讨论如何把链接地址转换为需要的链接地址操作。

我们为了实现链接地址的互相转换(为了方便),我们可以判断链接地址是否含有qq的域名就可以了。


if (url.indexOf("https://open.weixin.qq.com/connect/oauth2/authorize?") == 0) {
var redirect_uri = getUrlVars(url)["redirect_uri"];
if (redirect_uri != "") {
var newUrl = decodeURIComponent(redirect_uri);
$("#" + ctrlName).val(newUrl);
}
}

而如果是我们输入的正常链接,那么就应该把它转换为重定向的链接地址,如下所示。


else {
var newUrl = encodeURIComponent(url);
var reNewUrl = "https://open.weixin.qq.com/connect/oauth2/[email protected]&redirect_uri=" + newUrl + "&response_type=code&scope=snsapi_base&state=123#wechat_redirect";
$("#" + ctrlName).val(reNewUrl);
}

其中重定向链接需要带有一个当前微信开发用户的appId,这个不是固定的,是不同的开发人员都不一样的东西,这里使用了MVC的动态对象进行绑定:@ViewBag.appid。

在对应的MenuController控制器里面,给它赋值就可以了。


        /// <summary>
/// 默认的视图控制方法
/// </summary>
/// <returns></returns>
public override ActionResult Index()
{
ViewBag.appid = GetAppId();
return View();
}

这样配置后的重定向菜单地址列表就如下所示了,我们打开对应的记录详细页面,可以通过页面里面的功能按钮,随时对重定向菜单的地址进行转换,方便了解详细的链接内容。

3、重定向页面的设计及处理

配置了上面的链接地址后,我们需要在网站里面增加这样的一个页面进行处理用户的信息,一般情况下,我们可能是为了方便用户查看自己的微信基础信息,也为了给用户绑定用户个人数据使用的用途的,如用户可以绑定手机、Email邮箱等操作,还可以绑定和业务系统相关的用户名。这样用户就可以快速注册会员或者和后台的系统进行关联了。

我设计的两个用户信息展示界面如下所示。

这两个界面主要使用了Jquery
Mobile的相关内容,对界面进行了处理,整个模块结合了短信验证码的方式,对用户的手机进行验证处理,这样能够更高效的实现信息准确的绑定操作,当然,还可以结合外部系统,绑定用户的账号密码,这样用户可以在微信进入微网站平台进行购物、数据维护、业务管理等操作了,其实一旦绑定外部系统的ID,也就是提供了一个快速进行外部系统的入口了。

  

具体的内容在下一篇继续介绍了。

如果对这个《C#开发微信门户及应用》系列感兴趣,可以关注我的其他文章,系列随笔如下所示:

C#开发微信门户及应用(13)-使用地理位置扩展相关应用

C#开发微信门户及应用(12)-使用语音处理

C#开发微信门户及应用(11)--微信菜单的多种表现方式介绍

C#开发微信门户及应用(10)--在管理系统中同步微信用户分组信息

C#开发微信门户及应用(9)-微信门户菜单管理及提交到微信服务器

C#开发微信门户及应用(8)-微信门户应用管理系统功能介绍

C#开发微信门户及应用(7)-微信多客服功能及开发集成

C#开发微信门户及应用(6)--微信门户菜单的管理操作

C#开发微信门户及应用(5)--用户分组信息管理

C#开发微信门户及应用(4)--关注用户列表及详细信息管理

C#开发微信门户及应用(3)--文本消息和图文消息的应答

C#开发微信门户及应用(2)--微信消息的处理和应答

C#开发微信门户及应用(1)--开始使用微信接口

C#开发微信门户及应用(14)-在微信菜单中采用重定向获取用户数据,布布扣,bubuko.com

时间: 2024-10-03 07:56:50

C#开发微信门户及应用(14)-在微信菜单中采用重定向获取用户数据的相关文章

.NET 微信开发之 获取用户数据

通过微信接口获取用户信息主要分为以下几个步骤: a.获取公众号的access_token b.通过查询所有用户OPenid接口获取所有用户. string url = "https://api.weixin.qq.com/cgi-bin/user/get?access_token=" + access_token; c.通过获取用户openid,然后通过openid获取用户数据 d.把用户信息添加到数据库中. 1.参数化查询以及添加用户信息到数据库方法 public void AddT

微信获取用户数据后台写法,author2.0认证

1 /* 微信授权接口 */ 2 //1.设置路由 3 router.get('/wechat/userinfo', function(req, res) { 4 var cb = req.query.cb; 5 //设置cookie 6 res.cookie(wechat_userinfo_callback_url, cb); 7 var url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + appi

完整且易读的微信小程序的注册页面(包含倒计时验证码、获取用户信息)

目录 1.页面展示 2.wxml代码 3.wxss代码 4.js代码 1.页面展示 2.wxml代码 <!--pages/register/register.wxml--> <scroll-view> <image src='/images/register.png' mode='widthFix' class="topImage"></image> <view class='input-top'> <input id=

C#开发微信门户及应用(41)--基于微信开放平台的扫码登录处理

在现今很多网站里面,都使用了微信开放平台的扫码登录认证处理,这样做相当于把身份认证交给较为权威的第三方进行认证,在应用网站里面可以不需要存储用户的密码了.本篇介绍如何基于微信开放平台的扫码进行网站的登陆处理. 1.开放平台的认证 要使用网站的扫码登录处理,就需要先进行微信开放平台帐号的开发者资质认证,提交相关的资料,以及交付每年300元的认证费用. 认证后,建立相关的网站应用后,就有相关的APPID和APPSecret了,这些关键的参数就可以用来获取相关的用户信息了. 网站应用的应用详情界面如下

C#开发微信门户及应用(27)-公众号模板消息管理

通过模板消息接口,公众号能向关注其账号的用户发送预设模板的消息.模板消息仅用于公众号向用户发送重要的服务通知,只能用于符合其要求的服务场景中,如信用卡刷卡通知,商品购买成功通知等.不支持广告等营销类消息以及其它所有可能对用户造成骚扰的消息.本文主要介绍基于C#开发实现公众号模板消息的管理功能. “模板消息功能的推出,将极大地增强服务号的服务通知能力”,在一些一直期待微信模板消息功能开放的公众号运营者看来,微信一对一沟通的社交属性,让信息推送的触达率更加精准,这也让企业在成本.服务效率.性能上有了

C#开发微信门户及应用(25)-微信企业号的客户端管理功能

我们知道,微信公众号和企业号都提供了一个官方的Web后台,方便我们对微信账号的配置,以及相关数据的管理功能,对于微信企业号来说,有通讯录中的组织架构管理.标签管理.人员管理.以及消息的发送等功能,其中微信企业号的组织架构和标签可以添加相应的人员,消息发送可以包含文本.图片.语音.视频.图文.文件等内容.对于企业号来说,官方的接口几乎可以无限的发送消息,因此构建一个管理后台,管理企业号的人员,以及用来给企业成员发送消息就是一个很好的功能亮点,有时候可以提高我们企业内部的消息通讯效率和日常工作管理效

C#开发微信门户及应用(23)-微信小店商品管理接口的封装和测试

在上篇<C#开发微信门户及应用(22)-微信小店的开发和使用>里面介绍了一些微信小店的基础知识,以及对应的对象模型,本篇继续微信小店的主题,介绍其中API接口的封装和测试使用.微信小店的相关对象模型,基本上包括了常规的商品.商品分组.货架.库存.订单这些模型,还有商品分类,商品分类属性.商品分类SKU.快递邮寄模板.图片管理等功能.本文介绍的接口封装也就是基于这些内容进行的,并针对接口的实现进行测试和使用. 1.商品管理接口的定义 前面文章介绍了微信小店的对象模型,如下所示. 这个图形基本上覆

C#开发微信门户及应用(30)--消息的群发处理和预览功能

在很多场合下,我们可能需要利用微信公众号的优势,定期给指定用户群发送一些推广消息或者新闻内容,以便给关注客户一种经常更新公众号内容的感觉,同时也方便我们经常和用户进行互动.微信公众号的高级群发接口就是为了处理这个场景的,本文介绍在C#代码中如何封装消息的群发和预览等功能. 1.消息群发的功能和限制 对于公众号中的服务号和订阅号,群发的消息有一定的限制,具体规则如下所示. 1.对于认证订阅号,群发接口每天可成功调用1次,此次群发可选择发送给全部用户或某个分组: 2.对于认证服务号虽然开发者使用高级

C#开发微信门户及应用(18)-微信企业号的通讯录管理开发之成员管理

在上篇随笔<C#开发微信门户及应用(17)-微信企业号的通讯录管理开发之部门管理>介绍了通讯录的部门的相关操作管理,通讯录管理包括部门管理.成员管理.标签管理三个部分,本篇主要介绍成员的管理操作,包括创建.删除.更新.获取.获取部门成员几个操作要点. 1.成员的创建操作 为了方便,我们可以创建一个部门组织结构,这是开发的前提,因为我们通讯录管理,也是基于一个组织机构下的,如上篇介绍的组织结构层次一样.我这里创建一个广州爱奇迪的根结构,然后在其中在创建一些组织机构,如下图所示. 在后台可以通过功