微信企业号的用户是须要验证的,因此能关注企业号的用户事实上就是已经通过验证的用户。但企业应用中打开一个网页,在这个网页中怎样依据微信用户的信息创建web应用中最长使用的session呢?微信用户怎样和web的session关联起来呢?
比如:一个应用。依据不同的人员,显示不同的内容,各个网页之间须要session来传递一些信息。在微信企业号中怎样处理呢?
这个问题须要涉及的接口是OAuth2验证接口,须要配置可信域名,初始化session。
一下以一个带有URL的菜单为例进行说明
1依据OAuth2验证接口改写URL
比如须要跳转到http://abc.def.com.cn:8082/index.aspx页面,则依据OAuth验证接口说明,菜单的URL应该是
https://open.weixin.qq.com/connect/oauth2/authorize?appid=CORPID&redirect_uri=http://abc.def.com.cn:8082/index.aspx&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
当中appid为corpid。请改为自己实际的參数值,response_type固定为code。scope固定为snsapi_base,#wechat_redirect不用改,直接加上就能够了。
redirect_uri是须要跳转的URL,但须要urlencode处理,http://abc.def.com.cn:8082/index.aspx经过urlencode处理后为:http%3a%2f%2fabc.def.com.cn%3a8082%2findex.aspx,state不是必选的。能够填写a-zA-Z0-9的參数值组成的数据
因此菜单的URL应该为
https://open.weixin.qq.com/connect/oauth2/authorize?appid=myappid&redirect_uri=http%3a%2f%2fabc.def.com.cn%3a8082%2findex.aspx&response_type=code&scope=SCOPE&state=a#wechat_redirect
appid是myappid
response_type固定为code,scope固定为snsapi_base。state是a,
redirect_uri是http://abc.def.com.cn:8082/index.aspx,
经过urlencode后是http%3a%2f%2fabc.def.com.cn%3a8082%2findex.aspx
这样配置菜单的连接后,在微信中打开时。http://abc.def.com.cn:8082/index.aspx就会多一个查询字符串code。依据code就能够获取到打开这个微信用户的信息,然后就能够初始化web应用的session了。
2须要配置可信域名
再依照以第一步处理后。在微信端打开连接。会出现一个错误,这个是由于没有配置可信域名。
redirect uri 參数错误
须要在微信管理端配置可信域名。假设redirect_uri有port号。那'可信域名'也必须加上port号OAuth2验证接口
比如依据须要跳转的http://abc.def.com.cn:8082/index.aspx。配置可信域名例如以下,注意不要http
3初始化session
在进行了以上处理后,用户在点击菜单时,跳转的连接就会变为http://abc.def.com.cn:8082/index.aspx?code=3c452771ddfc0e75097d0509e0e555
也就是说多了一个查询字符串code,依据code就能够取到这个微信用户的UserId信息。
详细參考依据code获取成员信息
核心代码:
/// <summary>
/// 依据code获取成员信息
/// </summary>
/// <param name="userid"></param>
/// <returns></returns>
public static string GetUserInfo(string CODE)
{
// https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo? access_token=ACCESS_TOKEN&code=CODE
string urlFormat = "https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo?access_token={0}&code={1}";
var url = string.Format(urlFormat, BLLAccessToken.GetAccessToken(), CODE);
string UserId = string.Empty;
WebUtils wut = new WebUtils();
//数据不用加密发送
LogInfo.Info("依据code获取成员信息: " + CODE);
string sendResult = wut.DoGet(url);
OAuthResult tempAccessTokenjson = Tools.JsonStringToObj<OAuthResult>(sendResult);
if (tempAccessTokenjson.HasError())
{
LogInfo.Error("依据code获取成员信息返回错误: " + Tools.ToJsonString<OAuthResult>(tempAccessTokenjson)); }
else
{
UserId = tempAccessTokenjson.UserId;
}
return UserId;
}
index.aspx网页后端代码:
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
string code = Request.QueryString["code"].ToLower().Trim();
if (!string.IsNullOrEmpty(code))
{
if (HttpContext.Current.Session["usersession"] != null) //session信息已经存在。直接返回
{
new AppException("usersession已经存在不须要在处理");
return;
}
string username= BLLUser.GetUserInfo(code);
if (!string.IsNullOrEmpty(username))
{
initSession(username);
new AppException("初始化initSession,code=" + code + ",username=" + username);
}
else
{
new AppException("收到信息异常username为空");
}
}
else {
new AppException("收到信息异常code为空");
}
}
}
微信企业号开发:微信用户信息和web网页的session的关系的更多相关文章
-
.net之微信企业号开发(三) 回调模式的接口开发
一.前言 微信企业号应用中,有两种模式,一种是普通模式,这种模式只能进行简单网页链接,以及发送固定的消息.为了可以让企业号的用户更好的与应用交互,微信提供了回调模式,这种回调模式的可以将用户发送给微信 ...
-
.net之微信企业号开发(二) 企业号人员身份认证与开发
前言 这里完全可以链接一个登录页面,让用户输入用户名密码进行登录的...2333 但是,这样所就完全失去了微信企业号的意义,本来进入微信企业号的时候,就已经对人员身份进行认证了,你这里再让别人登录,不 ...
-
Force.com微信企业号开发系列(一) - 启用二次验证
微信于9月份推出企业号后引起了业界不小的反响,许多企业都在思索企业号将如何影响企业的运营,从本文开始,我将详细阐述微信企业号开发的相关知识,而本文将着重介绍如何实现更高安全机制的二次验证. 申请企业体 ...
-
微信企业号开发入门(回调模式)java
最近在开发微信企业号,刚接触时云里雾里的,在摸索过程中终于清晰了一点. 刚开始我以为订阅号.服务号.企业号的接口差不多,就一直用订阅号的教程来入门,后来才发现差的挺多的. 首先,微信企业号不像订阅号和 ...
-
.net之微信企业号开发(一) 所使用的环境与工具以及准备工作
前言 一直以来,从事的是.net winform的编程,虽然对移动互联这块很感兴趣,但是由于现有的工作和移动互联之间隔的太远,也就没有时间和精力好好的去研究和实现.今年年初辞职了,刚好朋友那里希望建立 ...
-
微信企业号开发之-如何获取secret 序列号
最近有项目基于微信企业号开发,简单记录下如何查看企业号secert 工具/原料 微信企业号 方法/步骤 用管理员的帐号登录后,选择[设置]-[权限管理]进入管理组设置界面 在左边点击[ ...
-
微信小程序 获取用户信息并保存登录状态
微信小程序 获取用户信息并保存登录状态:http://www.360doc.com/content/18/0124/11/9200790_724662071.shtml
-
Laravel wxxcx 微信小程序获取用户信息
wxxcx 是Laravel5微信小程序登录获取用户信息扩展 部署 12345678 # 安装$ composer require iwanli/wxxcx# 注册服务# 在 /config/app. ...
-
整合ssm三大框架使用注解开发查询用户信息
整合ssm三大框架使用注解开发查询用户信息 一.基础知识准备之spring mvc工作原理 二.分析 第一步:发起请求到前端控制器(DispatcherServlet) 第二步:前端控制器请求Hand ...
随机推荐
-
zend studio 配置 apache服务器事宜
安装好 zend studio后,配置 apache服务器时,设置 configuration directory时,需选中 xampp\apache里面的 conf 文件夹,即完整的路径为: *\x ...
-
android: SQLite 数据库的最佳实践
6.5.1 使用事务 前面我们已经知道,SQLite 数据库是支持事务的,事务的特性可以保证让某一系列的操 作要么全部完成,要么一个都不会完成.那么在什么情况下才需要使用事务呢?想象以下场 景, ...
-
sheet目标数据插入函数主键模块
#coding:gbk #导入处理excel的模块 import xlrd #定义哪些字段需要判断,只支持时间字段 toSureColArray = ['CREATE_TIME','MODIFY_TI ...
-
HW4.41
import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner i ...
-
Linq的一些基础查询
其中包括对数据中常用的条件查询,投影,分区,排序,分组,集合,元素,量词,和集集等标准查询操作符进行分类介绍 一.条件操作符 条件操作符where类似于SQL中的where子句,用于实现条件查询.下列 ...
-
tinyxml的封装与使用(转载)
tinyxml是个高效精简的xml解析开源代码. 针对tinyxml直接使用对于对xml不是很熟悉的入门新手来说,有些概念难以理解,因此我将其封装后,供大家使用. 头文件: #include &quo ...
-
aspnetpager使用介绍
AspNetPager分页控件解决了分页中的很多问题,直接采用该控件进行分页处理,会将繁琐的分页工作变得简单化, 效果如下: 下面是我如何使用AspNetPager控件进行分页处理的详细代码: 1.首 ...
-
nodejs(log4js)服务中应用splunk进行Log存储、搜索、分析、监控、警告
标题党,等博主这个月的知识库上传之后再来更新博文
-
图解FTP服务器搭建(Windows Server 2008)
http://wenku.baidu.com/link?url=aUMoUYvSXKbHdbOHt4lUUCq0BhjnPRTM8jNb80jjwJ4_CM5LFq3lSm6f1ZlPNbFo6HEj ...
-
tomcat jvm 参数优化
1. 内存设置 常见配置汇总 堆设置 -Xms:初始堆大小 -Xmx:最大堆大小 -XX:NewSize=n:设置年轻代大小 -XX:NewRatio=n:设置年轻代和年老代的比值.如:为3,表示年轻 ...