微信开发平台网页授权asp_微信网页授权和微信网页开发 - CSDN
  • asp.net下微信网页授权

    2016-10-25 15:55:10
    微信网页授权我相信做微信开发的小伙伴都可能遇见过这样的问题1.我们要明白微信网页授权主要是用来做什么? 用户在微信客户端中访问第三方网页,公众号可以通过微信网页授权机制,来获取用户基本信 息, 进 而实现...

    微信网页授权我相信做微信开发的小伙伴都可能遇见过这样的问题

    1.我们要明白微信网页授权主要是用来做什么?

    用户在微信客户端中访问第三方网页,公众号可以通过微信网页授权机制,来获取用户基本信 息, 进 而实现业务逻辑。

    网页授权分以下几步
    1. 配置网页授权回调域名
    2. 用户同意授权,获取code
    3. 通过code换取网页授权access_token
    4. 刷新access_token(如果需要)
    5. 拉取用户信息(需scope为 snsapi_userinfo)

    1. 配置网页授权回调域名
    现在微信高级接口列表中并没有-OAuth2.0 微信修改了配置地方
    公共号设置=>功能设置=>网页授权域名 的设置选项中,修改授权回调域名
    这里写图片描述!这里写图片描述这里写图片描述
    这里图片弄的比较小,小伙伴们可以登录公共微信号后台自己看
    关于网页授权回调域名的说明:

    1、这里填写的是域名(是一个字符串),而不是URL,因此请勿加 http:// 等协议头
    2、授权回调域名配置规范为全域名,比如需要网页授权的域名为:www.qq.com,配置以后此域名下面的页面http://www.qq.com/music.htmlhttp://www.qq.com/login.html 都可以进行OAuth2.0鉴权。但http://pay.qq.comhttp://music.qq.comhttp://qq.com无法进行OAuth2.0鉴权

    2. 用户同意授权,获取code

    在确保微信公众账号拥有授权作用域(scope参数)的权限的前提下(服务号获得高级接口后,默认拥有scope参数中的snsapi_base和snsapi_userinfo),引导关注者打开如下页面:

    https://open.weixin.qq.com/connect/oauth2/authorizeappid=APPID&

    redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect

    若提示“该链接无法访问”,请检查参数是否填写错误,是否拥有scope参数对应的授权作用域权限。

    这里写图片描述

    这里写图片描述

    redirect_uri:就是当网页获取code之后需要跳转的页面地址
    1.例如http://www.xxxx.net/index.aspx我当前页面要进行网页授权, 则填写redirect_uri
    http://www.xxxx.net/index.aspx

    3. 通过code换取网页授权access_token

    首先请注意,这里通过code换取的是一个特殊的网页授权access_token,与基础支持中的access_token(该access_token用于调用其他接口)不同。公众号可通过下述接口来获取网页授权access_token。如果网页授权的作用域为snsapi_base,则本步骤中获取到网页授权access_token的同时,也获取到了openid,snsapi_base式的网页授权流程即到此为止。
    尤其注意:由于公众号的secret和获取到的access_token安全级别都非常高,必须只保存在服务器,不允许传给客户端。后续刷新access_token、通过access_token获取用户信息等步骤,也必须从服务器发起。

    请求方法 获取code后,请求以下链接获取access_token:
    https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

    这里写图片描述这里写图片描述

    4. 刷新access_token(如果需要)
    这里可以参照微信公共平台提供的
    https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842&token=&lang=zh_CN[这里写链接内容]
    5. 拉取用户信息(需scope为 snsapi_userinfo)
    想必大家看到这里看到烦了 都是一些纸上谈兵的事情,上代码了
    比如我http://www.xxxx.net/index.aspx想进行网页授权
    这里我微信公共后台的数据AppID,Appsecret…等一些数据是放在了数据库

    比如现在通过ID来读取读取数据库数据,但是在项目中为了安全可能只是传一个ID,大家更具项目需求来写吧!

    “`第一次打开网页的时候:http://www.xxxx.net/index.aspx?ID=xxxx

    protected string toopenid { get; set; }
    protected void Page_Load(object sender, EventArgs e)
    {
            DAL da = new DAL();
            var appid = string.Empty;
            var appsecret = string.Empty;
            var code = Request.QueryString["Code"];
            var ID= Request.QueryString["ID"];
            if (string.IsNullOrEmpty(code))  //在网页授权之后会回调该页面 如果有值就不需要在去获取code
            {
                if (!string.IsNullOrWhiteSpace(ID))
                {
                    DataRow shopdataRow = da.GetAppID(ID);
                    if (shopdataRow != null)
                    {
                         appid = (String)shopdataRow["appid"];
                         Response.Redirect(BuildWebCodeUrl(appid, "http://www.xxxx.net/index.aspx?appid =" + appid, "snsapi_base",
                          "a-zA-Z0-9"));
                         //这步用户同意授权,获取code,获取之后回调当我当前页面
                         //大家有要问了为什么这里需要传递appID呢?这个appID是当我获取完之后通过appID来查询数据来获取appsecret
    
                    }
    
                }
    
    
            }
            else
            {
                if (!string.IsNullOrWhiteSpace(appid ))
                {
                    DataRow shopdataRow = da.Getappsecret(appid );
                    if (shopdataRow != null)
                    {
                        appsecret = (String)shopdataRow["appsecret"];
                     }
                }
                //Post 这里就是一个Post方法来获取用户的openid而已
                WebCredential theWebCredential = Post(appid, appsecret, code);
    
                toopenid = theWebCredential.openid;
              }
    

    WeiXin.BuildWebCodeUrl:说明
    ///
    /// 得到获取code的Url
    ///
    /// 公众号的唯一标识
    /// 授权后重定向的回调链接地址,请使用urlencode对链接进行处理
    /// 应用授权作用域,snsapi_base (不弹出授权页面,直接跳转,只能获取用户openid),snsapi_userinfo (弹出授权页面,可通过openid拿到昵称、性别、所在地。并且,即使在未关注的情况下,只要用户授权,也能获取其信息)
    /// 重定向后会带上state参数,开发者可以填写a-zA-Z0-9的参数值
    ///
    public static string BuildWebCodeUrl(string appid, string redirect, string scope, string state = “”)
    {

      return string.Format("https://open.weixin.qq.com/connect/oauth2/
      authorize?appid={0}&redirect_uri={1}&response_type=code&scope={2}&state=       {3}#wechat_redirect", appid, redirect, scope, state);
     }
    

    如果是用Asp。net做的可以下载
    https://github.com/loogn/WeiXinSDK/tree/master/Loogn.WeiXinSDK
    这个是一个微信开发的C#包

    写的不好,大家多原谅哈

    展开全文
  • asp.net C#开发,基于微信公众平台网页授权获取用户基本信息源代码
  • 微信公众平台 网页授权获取用户基本信息 //获取从wxProcess.aspx传递过来的跳转地址reurl if (Request.QueryString["reurl"] != null && Request.QueryString["reurl"] != "") { reurl = Request.QueryString["re...
  • 各位大佬,在做微信公众号的时候,有没有遇到网页授权的问题? 就是拼接了微信授权的url,将url发送到微信助手中,能调出页面,让用户选择同意或拒绝。但是发布到IIS服务器上之后,再在公众号上调用,会先提示...
  • 调试微信公众号的网页授权时,要填写网页授权域名(如图1),否则授权的时候会提示redirect_uri参数错误(图2),可是我得在localhost先调试成功才能上传到实际的网站上吧,可是这里不支持localhost,这下蛋疼了。...

    调试微信公众号的网页授权时,要填写网页授权域名(如图1),否则授权的时候会提示redirect_uri参数错误(图2),可是我得在localhost先调试成功才能上传到实际的网站上吧,可是这里不支持localhost,这下蛋疼了。

    73696-20161205000140896-1024286311.jpg 图1
    73696-20161205000132365-1589517606.jpg 图2

    查了下资料,都是使用ngrok,这个工具可以实现将公网上的域名映射到内网localhost的指定端口,跟花生壳类似,不过这个更适合开发者。
    然后就是着手解决问题了,挺简单一件事情,绕了一圈,花掉了半天时间,把以下3个方案都做了。

    1. 使用ngrok官网的服务(要带梯子,固定域名要收费,费用挺贵的,不如方案2)
    2. 自己搭建ngrok服务器(需要一个域名+独立服务器,费用也高,然后要慢慢折腾,不如方案3)
    3. 使用国内免费的ngrok服务(推荐),推荐动酷。

    先试了第1种,对于国内用户,除非必要还是不用为好;于是换第2种,全部编译OK,准备运行时,发现要占用80和443端口,我已经有网站在跑,这样会有冲突,在想怎么解决的时候发现了第3种方案。第3种方案,一测就过。

    传送门:动酷的免费ngrok

    转载于:https://www.cnblogs.com/pheye/p/6132453.html

    展开全文
  • 讲解用户在微信客户端中访问第三方网页,公众号可以通过微信网页授权机制,来获取用户基本信息,进而实现业务逻辑。 获取code、access_token、openid、用户昵称、地区、性别、头像等 官方文档 ...开发步骤 ...
  • 转自 http://www.cnblogs.com/0201zcr/p/5133062.html   1、OAuth2.0  OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,... ...每一个令牌授权...

    转自

    http://www.cnblogs.com/0201zcr/p/5133062.html

     

    1、OAuth2.0

      OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用。

      允许用户提供一个令牌而不是用户名和密码来访问他们存放在特定服务提供者的数据。每一个令牌授权一个特定的网站(例如,视频编辑网站)在特定的时段(例如,接下来的2小时内)内访问特定的资源(例如仅仅是某一相册中的视频)。这样,OAuth允许用户授权第三方网站访问他们存储在另外的服务提供者上的信息,而不需要分享他们的访问许可或他们数据的所有内容。

    2、目标

      我们这里主要模拟使用OAuth2.0,用户通过扫描我们网页应用的二维码并进行授权登录来获取用户的基本信息的过程。详细的接口相关信息可以在微信开放平台上查看:https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&lang=zh_CN

    3、前期准备(获取微信开发者权限)

      我们这里主要讲的是网站(Web)应用,网站应用微信登录是基于OAuth2.0协议标准构建的微信OAuth2.0授权登录系统(即上面的协议)。在微信客户端授权登录(获取用户信息)的可以查看:http://www.cnblogs.com/0201zcr/p/5131602.html

      在进行微信OAuth2.在进行微信OAuth2.0授权登录接入之前,在微信开放平台注册开发者帐号,并拥有一个已审核通过的网站应用,并获得相应的AppID和AppSecret,申请微信登录且通过审核后,可开始接入流程。

    3.1、注册开发者账号

      可以在https://open.weixin.qq.com/ 这里申请开发的账号。由于是腾讯的网页,这里可以直接通过 QQ号进行登录。

    3.2、提交网站应用审核

      在已经登录的界面中选择“管理中心”——》网站应用——》创建网站应用

       将会弹出下面的界面

      填写过后,还有有一个页面需要填写,提交一份纸质版申请书扫描件(会提供模板,我们下载再来填写后,需盖章,签名),配置回调域名(扫码登录后会跳转的页面)等。

      之后提交审核即可,等微信审核通过,我们即可获得我们需要的网页应用的appid和AppSecret,并配置后回调的域名了(这三样是我们开发所必须的)。

    3.3、开发者资质认证

      由于我们这里要使用微信登录的接口,所以我们还需要向微信提出认证,只有认证了才能使用微信那些高级的接口。未认证的如下图所示

       认证之后是这样子的:

        我现在暂时没有找到可以向公众账号那样子的测试账号的申请。如果有知道怎么可以申请到测试账号的高手,希望能赐教一下。

      接下来,我们就可以开始我们的网页微信扫码登录开发了。

    4、授权流程说明

      微信OAuth2.0授权登录让微信用户使用微信身份安全登录第三方应用或网站,在微信用户授权登录已接入微信OAuth2.0的第三方应用后,第三方可以获取到用户的接口调用凭证(access_token),通过access_token可以进行微信开放平台授权关系接口调用,从而可实现获取微信用户基本开放信息和帮助用户实现基础开放功能等。

      微信OAuth2.0授权登录目前支持authorization_code模式,适用于拥有server端的应用授权。该模式整体流程为:

    1. 第三方发起微信授权登录请求,微信用户允许授权第三方应用后,微信会拉起应用或重定向到第三方网站,并且带上授权临时票据code参数;
    2. 通过code参数加上AppID和AppSecret等,通过API换取access_token;
    3. 通过access_token进行接口调用,获取用户基本数据资源或帮助用户实现基本操作。

       获取access_token时序图:

     

    5、获取网页的二维码

      当我们通过微信的认证,获取到了appid和AppSecret,并配置了回调的域名。我们就已经可以获取属于我们网页的二维码了,获取的方式很简单,只需打开一个微信的链接,加上我们的appid和回调域名即可在网页上面打开二维码,用户用微信客户端扫码并授权登录之后即会跳转到我们配置的回调域名下。

    注意:

    1、这里填写的是域名(是一个字符串),而不是URL,因此请勿加http://等协议头;
    2、授权回调域名配置规范为全域名,比如需要网页授权的域名为:www.qq.com,配置以后此域名下面的页面http://www.qq.com/music.html 、 http://www.qq.com/login.html 都可以进行OAuth2.0鉴权。但http://pay.qq.com 、 http://music.qq.com 、 http://qq.com无法进行OAuth2.0鉴权

    5.1、请求url说明

      第三方使用网站应用授权登录前请注意已获取相应网页授权作用域(scope=snsapi_login),则可以通过在PC端打开以下链接:

    https://open.weixin.qq.com/connect/qrconnect?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect

     

     参数说明

    参数 是否必须 说明
    appid 应用唯一标识(前面认证网页应用中获得)
    redirect_uri 重定向地址,需要进行UrlEncode(前面认证网页应用中获得)
    response_type 填code
    scope 应用授权作用域,拥有多个作用域用逗号(,)分隔,网页应用目前仅填写snsapi_login即可
    state 用于保持请求和回调的状态,授权请求后原样带回给第三方。该参数可用于防止csrf攻击(跨站请求伪造攻击),建议第三方带上该参数,可设置为简单的随机数加session进行校验

     返回说明

       用户允许授权后,将会重定向到redirect_uri的网址上,并且带上code和state参数

    redirect_uri?code=CODE&state=STATE

       若用户禁止授权,则重定向后不会带上code参数,仅会带上state参数

    redirect_uri?state=STATE

    5.2、事例:

      一号店的微信二维码链接如下:

    https://open.weixin.qq.com/connect/qrconnect?appid=wxbdc5610cc59c1631&redirect_uri=https%3A%2F%2Fpassport.yhd.com%2Fwechat%2Fcallback.do&response_type=code&scope=snsapi_login&state=3d6be0a4035d839573b04816624a415e#wechat_redirect

       将其复制到浏览器中打开即可获得一号店的二维码,二维码页面如下:

      通过使用微信客户端的扫一扫功能,扫描该二维码,即会跳转到上面填写redirect_uri所在的地址上。假如用户同意授权,这里就获得了微信返回的code参数了。

    6、获取用户信息

      假如前面已经获得code。我们可以通过code参数去获取用户openid和access_token,进而获得用户的信息。

    6.1、通过code参数获取access_token

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

     参数说明

    参数 是否必须 说明
    appid 应用唯一标识,在微信开放平台提交应用审核通过后获得
    secret 应用密钥AppSecret,在微信开放平台提交应用审核通过后获得
    code 填写第一步获取的code参数
    grant_type 填authorization_code

    返回说明

    正确的返回:

    复制代码

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

    复制代码

    参数 说明
    access_token 接口调用凭证
    expires_in access_token接口调用凭证超时时间,单位(秒)
    refresh_token 用户刷新access_token
    openid 授权用户唯一标识
    scope 用户授权的作用域,使用逗号(,)分隔
     unionid 当且仅当该网站应用已获得该用户的userinfo授权时,才会出现该字段。

    错误返回样例:

    {"errcode":40029,"errmsg":"invalid code"}

    注意

    • code参数的超时时间是5分钟,且每次请求的code参数的值都不一样。
    • access_token的超时时间是32分钟。

    6.2、通过access_token获取用户的基本信息

    获取的前提条件

    • access_token有效且为超时;
    • 微信用户已授权给第三方应用账号相应接口作用域(scope)【在二维码生成连接那里填写

    对于接口作用域(scope),能调用的接口有以下:

    授权作用域(scope) 接口 接口说明
    snsapi_base /sns/oauth2/access_token 通过code换取access_token、refresh_token和已授权scope
    /sns/oauth2/refresh_token 刷新或续期access_token使用
    /sns/auth 检查access_token有效性
    snsapi_userinfo /sns/userinfo 获取用户个人信息

     

      使用snsapi_base作用域的授权是扫码之后无需用户点击授权,扫码后直接跳转,用户感觉不到授权了,但这种授权方式能获取的数据量有限,这里我们要获取用户的基本信息,我们需要使用snsapi_userinfo授权。使用snsapi_userinfo授权,扫码后出现类似于下面的授权界面

      此接口用于获取用户个人信息。开发者可通过OpenID来获取用户基本信息。特别需要注意的是,如果开发者拥有多个移动应用、网站应用和公众帐号,可通过获取用户基本信息中的unionid来区分用户的唯一性,因为只要是同一个微信开放平台帐号下的移动应用、网站应用和公众帐号,用户的unionid是唯一的。换句话说,同一用户,对同一个微信开放平台下的不同应用,unionid是相同的。请注意,在用户修改微信头像后,旧的微信头像URL将会失效,因此开发者应该自己在获取用户信息后,将头像图片保存下来,避免微信头像URL失效后的异常情况。

      

    https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID

     参数说明

    参数 是否必须 说明
    access_token 调用凭证(上一个请求中获得)
    openid 普通用户的标识,对当前开发者帐号唯一(上一个请求中获得)
           lang   否 国家地区语言版本,zh_CN 简体,zh_TW 繁体,en 英语,默认为zh-CN

    返回说明

    正确的Json返回结果:

    复制代码

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

    复制代码

    参数 说明
    openid 普通用户的标识,对当前开发者帐号唯一
    nickname 普通用户昵称
    sex 普通用户性别,1为男性,2为女性
    province 普通用户个人资料填写的省份
    city 普通用户个人资料填写的城市
    country 国家,如中国为CN
    headimgurl 用户头像,最后一个数值代表正方形头像大小(有0、46、64、96、132数值可选,0代表640*640正方形头像),用户没有头像时该项为空
    privilege 用户特权信息,json数组,如微信沃卡用户为(chinaunicom)
    unionid 用户统一标识。针对一个微信开放平台帐号下的应用,同一用户的unionid是唯一的。

    错误的Json返回示例:

    { 
    "errcode":40003,"errmsg":"invalid openid"
    }

    7、总结 

      最近着手开发了微信网页扫码登录和公众号授权登录收获颇丰,两者的开发很类似。以下是我个人摸索过程中发现的两者的异同:

    • 两者都可以通过微信客户端扫码授权的方式,让第三方页面获得微信用户的一些基本信息(昵称、性别、所在地、在微信唯一标示等……)。他们都是通过提供一个链接让用户授权的方式。但网页版需要在页面打开二维码之后授权,而公众号则需要用户先关注了我们的公众号,然后点开公众号里面的链接,确认授权即可。
    • 网页扫码登录需要将授权的链接(二维码链接)在网页中打开、而公众号授权登录的链接必须要微信客户端中打开。
    • 无论网页扫码登录还是在公众号中授权登录,都是通过授权的方式获得一个code参数,之后通过code参数获取access_token和openid和通过access_token和openid去获取用户的基本信息的请求链接是一样的。
    • 在开发公众号授权登录的过程中,我发现了有测试账号的提供,足以满足我们的测试和开发,但在开发网页扫码时,暂时未发现哪里能获取测试账号,我是通过申请获取的。(希望知道哪里有测试账号的请求高手赐教)。

     公众账号授权登录:http://www.cnblogs.com/0201zcr/p/5131602.html

    展开全文
  • 2、在微信公众平台中,将公众号设置->功能设置中的 JS接口安全域名,设置成要接收返回数据的网址 3、将微信公众号的相关信息填写到 login.asp 和 callback.asp 中的相关位置。 4、将压缩包中的3个文件和一个文件更...
  • ...最近做了一个公司的微信的公众号,对微信的流程清楚了不少,这里记录下,算不上多高深的,只希望能帮助到一部分人吧。...首先大家要看下微信的API文档。...微信网页授权,获取用户的微信官方API文档地
     
    
    开源源码下载,请参照csdn下载:  http://download.csdn.net/detail/kingmax54212008/9453082


    最近做了一个公司的微信的公众号,对微信的流程清楚了不少,这里记录下,算不上多高深的,只希望能帮助到一部分人吧。

     

    闲话少说,开始:

    首先大家要看下微信的API文档。

    微信网页授权,获取用户的微信官方API文档地址:
    http://mp.weixin.qq.com/wiki/17/c0f37d5704f0b64713d5d2c37b468d75.html

    三次握手
    微信认证流程(我自己简称三次握手):

    1、用户同意授权,获取code
    2、通过code换取网页授权access_token,用户openId等信息
    3、通过access_token和用户的openId获取该用户的用户信息

    思路:
    经过研究,我这边的思路是:让所有页面都继承同一个页面,在这个页面里做微信登录授权处理,
    因为第一步必须要经过微信的登录授权,不能网页后端请求,所以先要经过用户同意,通过页面网页请求组装的微信请求链接。请求该链接,
    获取code后,后端模拟请求。获取用户信息。

    微信三次握手的方法(代码)

    public class WeiXinOAuth{    /// <summary>    /// 获取微信Code    /// </summary>    /// <param name="appId"></param>    /// <param name="appSecret"></param>    /// <param name="redirectUrl"></param>    public string GetWeiXinCode(string appId,string appSecret,string redirectUrl)    {        Random r = new Random();        //微信登录授权        //string url = "https://open.weixin.qq.com/connect/qrconnect?appid=" + appId + "&redirect_uri=" + redirectUrl +"&response_type=code&scope=snsapi_login&state=STATE#wechat_redirect";        //微信OpenId授权        //string url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + appId + "&redirect_uri=" + redirectUrl +"&response_type=code&scope=snsapi_login&state=STATE#wechat_redirect";        //微信用户信息授权        string url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + appId + "&redirect_uri=" + redirectUrl + "&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect";        return url;    }    /// <summary>    /// 通过code获取access_token    /// </summary>    /// <param name="appId"></param>    /// <param name="appSecret"></param>    /// <param name="code"></param>    /// <returns></returns>    public Model.WeiXinAccessTokenResult GetWeiXinAccessToken(string appId,string appSecret,string code)    {        string url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid="+appId+"&secret="+appSecret+            "&code="+ code + "&grant_type=authorization_code";        string jsonStr = Tools.GetHttpRequest(url);        Model.WeiXinAccessTokenResult result = new Model.WeiXinAccessTokenResult();        if (jsonStr.Contains("errcode"))        {            Model.WeiXinErrorMsg errorResult = new Model.WeiXinErrorMsg();            errorResult=JsonHelper.ParseFromJson<Model.WeiXinErrorMsg>(jsonStr);            result.ErrorResult = errorResult;            result.Result = false;        }        else        {            Model.WeiXinAccessTokenModel model = new Model.WeiXinAccessTokenModel();            model = JsonHelper.ParseFromJson<Model.WeiXinAccessTokenModel>(jsonStr);            result.SuccessResult = model;            result.Result = true;        }        return result;    }    /// <summary>    /// 拉取用户信息    /// </summary>    /// <param name="accessToken"></param>    /// <param name="openId"></param>    /// <returns></returns>    public Model.WeiXinUserInfoResult GetWeiXinUserInfo(string accessToken,string openId)    {        string url = "https://api.weixin.qq.com/sns/userinfo?access_token="+accessToken+"&openid="+openId+"&lang=zh_CN";        string jsonStr = Tools.GetHttpRequest(url);        Model.WeiXinUserInfoResult result = new Model.WeiXinUserInfoResult();        if(jsonStr.Contains("errcode"))        {            Model.WeiXinErrorMsg errorResult = new Model.WeiXinErrorMsg();            errorResult = JsonHelper.ParseFromJson<Model.WeiXinErrorMsg>(jsonStr);            result.ErrorMsg = errorResult;            result.Result = false;        }        else        {            Model.WeiXinUserInfo userInfo = new Model.WeiXinUserInfo();            userInfo = JsonHelper.ParseFromJson<Model.WeiXinUserInfo>(jsonStr);            result.UserInfo = userInfo;            result.Result = true;        }        return result;    }}

    所需要的对应实体类

    WeiXinAccessTokenResult 类:

    View Code
    WeiXinAccessTokenModel类:
    View Code
    WeiXinErrorMsg类:
    View Code
    WeiXinUserInfoResult类:
     
    View Code
    WeiXinUser 类 :
    View Code
    所有的页面,都会继承BasePage页面,这样方便处理,继承这个页面的其他页面就不需要考虑认证的问题了。
    public partial class BasePage : System.Web.UI.Page{    public BasePage()    {        this.Page.Load += new EventHandler(Page_Load);        this.Page.Unload += new EventHandler(Page_UnLoad);    }    protected void Page_Load(object sender, EventArgs e)    {        DoWith();    }    protected void Page_UnLoad(object sender, EventArgs e)    {    }    private void DoWith()    {        //用户尚未登录        if (BLL.UserInfoManager.Instance().GetUserId() <= 0)        {            //获取appId,appSecret的配置信息            string appId = System.Configuration.ConfigurationSettings.AppSettings["appid"];            string appSecret = System.Configuration.ConfigurationSettings.AppSettings["secret"];            Core.WeiXinOAuth weixinOAuth = new WeiXinOAuth();            //微信第一次握手后得到的code 和state            string _code = Cmn.Request.Get("code");            string _state = Cmn.Request.Get("state");            if (_code == "" || _code == "authdeny")            {                if (_code == "")                {                    //发起授权(第一次微信握手)                    string _authUrl = weixinOAuth.GetWeiXinCode(appId, appSecret, HttpContext.Current.Server.UrlEncode(HttpContext.Current.Request.Url.ToString()));                    HttpContext.Current.Response.Redirect(_authUrl, true);                }                else                { // 用户取消授权                    HttpContext.Current.Response.Redirect("~/Error.html", true);                }            }            else            {                //获取微信的Access_Token(第二次微信握手)                Core.Model.WeiXinAccessTokenResult modelResult = weixinOAuth.GetWeiXinAccessToken(appId, appSecret, _code);                //获取微信的用户信息(第三次微信握手)                Core.Model.WeiXinUserInfoResult _userInfo = weixinOAuth.GetWeiXinUserInfo(modelResult.SuccessResult.access_token,modelResult.SuccessResult.openid);                //用户信息(判断是否已经获取到用户的微信用户信息)                if (_userInfo.Result && _userInfo.UserInfo.openid != "")                {                    //保存获取到的用户微信用户信息,并保存到数据库中                }                else                {                    GameTradingByPublic.ExceptionLog.writeFile(2, "获取用户OpenId失败");                }            }        }    }}

     

    •  
    开源源码下载,请参照csdn下载:  http://download.csdn.net/detail/kingmax54212008/9453082


    展开全文
  • 转自http://www.cnblogs.com/0201zcr/p/5133062.html1、OAuth2.0 OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片...每一个令牌授权一个特定的网站(例如,...
  • 微信登录一般有两个,一个是微信开放平台授权登录,一个是微信公众号授权登录,两者都需要认证才可以继续开发,开放平台开发流程与新浪微博授权差不多,后者开发流程稍有不同,而且可以用测试号进行开发。...
  • 笔者在CSDN博客频道推出微信公众平台开发教程之后,接触了许多公众平台开发爱好者,也帮助他们解决了许多实际的问题,当然这其中有很多问题都是重复的,因此,笔者将这些问题及解答整理出来,以帮助更多初学者少走...
  • ASP.NET MVC4 微信公众号开发网页授权(一):搭建基础环境 通过了上一篇文章我们已经搭建好了基础开发大环境,现在打开开发环境这里我用的是 vs2013,通过如下方式: 拼接请求链接重定向到目标地址(也就是...
  • 已经获得code现在要访问 ...返回的JSON数据包如下: { "access_token":"ACCESS_TOKEN", "expires_in":7200, "refresh_token":"REFRESH_TOKEN", "openid":"OPENID", "scope":"SCOPE" ...现在要获取openid,怎么在后台...
  • //得到AppID和Appsecret private string AppID = WebConfigurationManager.AppSettings.Get("AppID"); private string APPSECRET = WebConfigurationManager.AppSettings.Get("...
  • ASP.NET MVC5&微信公众平台整合开发实战(响应式布局、JQuery Mobile,Windows Azure、微信核心开发) 课程分类:ASP.NET MVC 适合人群:中级 课时数量:29课时 用到技术:深入MVC开发模式、C#核心语言特性、C#核心...
  • 参考:https://www.cnblogs.com/sword-successful/p/6262311.html?utm_source=itdadao&amp;utm_medium=referral
  • 最近开发微信客户端项目时遇到
  • 微信网页授权
  • ASP版 企业微信API之授权登录 ASP版 企业微信API获取用户信息 ASP版 企业微信API获取用户openid
1 2 3 4 5 ... 20
收藏数 1,393
精华内容 557
关键字:

微信开发平台网页授权asp