C#开发微信公众号——网页开发之微信网页授权
首先咱们先看下公众号的文档里面的介绍

上述图片的文字描述就是讲述了网页授权有什么用,就是为了获取微信用户的基本信息;授权回调域名的规范,说到域名回调的事情就不得不提一下设置网页授权域名

最好将这三个域名设置好,以防自己要用的时候忽略的这三个小东西。
好了域名设置好了,之后咱们再来看看网页授权的流程

第一步:咱们先通过接口让用户同意授权获取code

scope=snsapi_base这个时候,就相当于我们默认用户同意授权,但由于不是用户自己确认的授权,所以只能获取用户的openid,不能获取用户的一些基本信息;
第二步:通过code获取access_token

第三步与第四步第五步,是给有需要的使用。因为我们这边是只需要获取到用户的openid即可,也不需要用户的基本信息,所以就不详细讲了。当初由于因为这些接口涉及到跳转页面,所以当初想怎么简单怎么来,就运用aspx的后台可以很快实现这些比较复杂的逻辑。

/// <summary>
/// 通过授权跳转页面
/// </summary>
/// <param name="url"></param>
/// <param name="state"></param>
/// <returns></returns>
public static string GetAuthorize(string url)
{
var state = Guid.NewGuid().ToString().Replace("-", "").ToLower();
HttpContext.Current.Session["weixin_state"] = state;
var urlencode = HttpContext.Current.Server.UrlEncode(url);
return string.Format(@"https://open.weixin.qq.com/connect/oauth2/authorize?appid={0}&redirect_uri={1}&response_type=code&scope=snsapi_base&state={2}#wechat_redirect"
, _appid, urlencode, state);
} /// <summary>
/// 通过code获取会员登录微信实体
/// </summary>
/// <param name="code"></param>
/// <param name="state"></param>
/// <returns></returns>
public static AccessTokenCallBack GetAccessTokenByCode(string code, string state)
{
AccessTokenCallBack accessTokenCallBack = null;
if (!string.IsNullOrEmpty(code) && !string.IsNullOrEmpty(state) && (HttpContext.Current.Session["weixin_state"] + "") == HttpContext.Current.Server.UrlDecode(state))
{
try
{
var resJson = SendHttpGet(string.Format("https://api.weixin.qq.com/sns/oauth2/access_token?appid={0}&secret={1}&code={2}&grant_type=authorization_code", _appid, _secret, HttpContext.Current.Server.UrlDecode(code)));
accessTokenCallBack = JsonConvert.DeserializeObject<AccessTokenCallBack>(resJson);
}
catch (Exception ex)
{
LogHelper.WriteLog(typeof(WeChatHelper), ex, Level.Error);
}
}
return accessTokenCallBack;
} /// <summary>
/// HTTPget请求
/// </summary>
/// <param name="url"></param>
/// <returns></returns>
public static string SendHttpGet(string url)
{
using (WebClient client = new WebClient() { Encoding = System.Text.Encoding.UTF8 })
{
return client.DownloadString(url);
}
}
(现在看起来都想把这些代码重构一下,都不知道自己怎么写成这个样子的。。。)我就忍一下吧,_appid, _secret这两个就是微信开发者所必须保存到配置文件的东西。。。
这样我们就可以通过openid将微信的用户与我们系统里面的会员所关联,但是值得注意的是如果你们后期还有什么微信开放平台微信登录等。这时候就要注意到一个叫UnionID的东西。文档是这样给出的解释:
1、请注意,网页授权获取用户基本信息也遵循UnionID机制。即如果开发者有在多个公众号,或在公众号、移动应用之间统一用户帐号的需求,需要前往微信开放平台(open.weixin.qq.com)绑定公众号后,才可利用UnionID机制来满足上述需求。
2、UnionID机制的作用说明:如果开发者拥有多个移动应用、网站应用和公众帐号,可通过获取用户基本信息中的unionid来区分用户的唯一性,因为同一用户,对同一个微信开放平台下的不同应用(移动应用、网站应用和公众帐号),unionid是相同的。
但是只有在拥有开放平台的账号以及在开放平台上绑定公众号的时候,才会出现UnionID。所以楼主这边只是为了提个醒,以防你们以后用到这个会吹亏(我就是掉过这个坑)。所以大家就留一点心,留个口子就行了(就先加个字段呗,多大点事儿)。
以上就是网页授权一些概述。。。。
C#开发微信公众号——网页开发之微信网页授权的更多相关文章
- C#微信公众号接口开发,灵活利用网页授权、带参数二维码、模板消息,提升用户体验之完成用户绑定个人微信及验证码获取
一.前言 当下微信公众号几乎已经是每个公司必备的,但是大部分微信公众账号用户体验都欠佳,特别是涉及到用户绑定等,需要用户进行复杂的操作才可以和网站绑定,或者很多公司直接不绑定,而是每次都让用户填写账号 ...
- 微信公众号支付开发全过程 --JAVA
按照惯例,开头总得写点感想 ------------------------------------------------------------------ 业务流程 这个微信官网说的还是很详细的 ...
- 到处是坑的微信公众号支付开发(java)
之前公司项目开发中支付是用阿里的支付做的,那叫一个简单,随意:悲催的是,现在公司开发了微信公众号,所以我步入了全是坑的微信支付开发中... ------------------------------ ...
- PHP微信公众号后台开发(Yii2实现)
本文内容较多,包括微信接入.获取微信用户信息.微信支付.JSSDK配置参数获取等部分.如果读者对微信开发没有一个主观上的认识,那么建议读者先研读微信公众平台开发者文档,然后再阅读本文,效果更佳!另外本 ...
- C#/ASP.NET MVC微信公众号接口开发之从零开发(四) 微信自定义菜单(附源码)
C#/ASP.NET MVC微信接口开发文章目录: 1.C#/ASP.NET MVC微信公众号接口开发之从零开发(一) 接入微信公众平台 2.C#/ASP.NET MVC微信公众号接口开发之从零开发( ...
- C#/ASP.NET MVC微信公众号接口开发之从零开发(二) 接收微信消息并且解析XML(附源码)
文章导读: C#微信公众号接口开发之从零开发(一) 接入微信公众平台 微信接入之后,微信通过我们接入的地址进行通信,其中的原理是微信用户发送消息给微信公众账号,微信服务器将消息以xml的形式发送到我们 ...
- C#/ASP.NET MVC微信公众号接口开发之从零开发(三)回复消息 (附源码)
C#/ASP.NET MVC微信接口开发文章目录: 1.C#/ASP.NET MVC微信公众号接口开发之从零开发(一) 接入微信公众平台 2.C#/ASP.NET MVC微信公众号接口开发之从零开发( ...
- Java开发微信公众号(五)---微信开发中如何获取access_token以及缓存access_token
获取access_token是微信api最重要的一个部分,因为调用其他api很多都需要用到access_token.比如自定义菜单接口.客服接口.获取用户信息接口.用户分组接口.群发接口等在请求的时候 ...
- Java开发微信公众号(四)---微信服务器post消息体的接收及消息的处理
在前几节文章中我们讲述了微信公众号环境的搭建.如何接入微信公众平台.以及微信服务器请求消息,响应消息,事件消息以及工具处理类的封装:接下来我们重点说一下-微信服务器post消息体的接收及消息的处理,这 ...
- Java开发微信公众号(三)---微信服务器请求消息,响应消息,事件消息以及工具处理类的封装
在前面几篇文章我们讲了微信公众号环境的配置 和微信公众号服务的接入,接下来我们来说一下微信服务器请求消息,响应消息以及事件消息的相关内容,首先我们来分析一下消息类型和返回xml格式及实体类的封装. ( ...
随机推荐
- bootstrap中chosen控件样式有时会冲突
加上这句话试试 $(".chosen-container").css("width","100%"); 或者 100%改成 100px试试
- 开发LED屏幕页面遇到的问题
上上个礼拜公司的展销会活动需要一个展示在LED大屏幕的页面,顶部显示平台交易总金额,左右两边分别是厂家和买家实时交易记录,具体页面长下面这个样子 需求评审的时候产品说顶部的总金额要有一个数字滚动或者翻 ...
- 标准C 语言总结
***************C语言****************** --day01-- Linux是一个和Windows类似的操作系统 通常通过终端软件使用Linux操作系统 终端软件里只能使用 ...
- BZOJ 1614 USACO 07Jan. 洛谷1948 电话线
二分+特殊姿势的check:二分最小代价P,把边权小于等于P的边设为0,其他的设为1,跑一遍最短路,判断dis[n]是否大于K #include<cstdio> #include<a ...
- bupt summer training for 16 #5 ——数据结构
https://vjudge.net/contest/173780 A.假设 Pt = i,则由Ppi = i得 Ppt = t = Pi 所以就有 if Pt = i then Pi = t #in ...
- hdu 1220组合数学
两个立方体相交的点数有0 1 2 4 不考虑相交点数的话有C(n,2)个立方对. 而求不超过两个交点的对数,即为用总的减去有四个交点的对数,而四个交点即为同面 四个交点的对数为相同的面的个数为(所有的 ...
- iOS:让64位兼容百度地图
当使用了百度地图sdk的app在64位机中运行时,会出现No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=x86_6 ...
- Openfire:访问Servlet时绕开Openfire的身份验证
假设有如下的场景,当我们开发一个允许Servlet访问的OF插件时,如果不需要身份验证的话,或者有其它的安全机制的话,我们会不希望每次都做一次OF的身份验证,而是能够直接访问Servlet.绕开身份验 ...
- Cookie && Session && Token
Cookies Cookie的由来: HTTP 本身是一个无状态的 request/response 协议. server接收一个来自client的request, 处理完以后返回一个response ...
- iOS开发一行代码系列:一行搞定数据库
原理 iOS 和 SQL的相应关系 Model类结构 => SQL表结构 Model实例 => SQL表中的一行 Model实例的属性 => S ...