zoukankan      html  css  js  c++  java
  • C#微信公众号开发-高级接口-之网页授权oauth2.0获取用户基本信息(二)

    C#微信公众号开发之网页授权oauth2.0获取用户基本信息(一)

    中讲解了如果通过微信授权2.0snsapi_base获取已经关注用户的基本信息,然而很多情况下我们经常需要获取非关注用户的信息,方法如下:

    第一步和之前讲的一样:获取code,但是scope使用方法是snsapi_userinfo;

    第二步,根据code获取openid和access_token(此处的access_token是通过网页授权code换取的不是我们之前讲的全局的票据),代码:

     1     /// <summary>
     2     ///用code换取获取用户信息(包括非关注用户的)
     3     /// </summary>
     4     /// <param name="Appid"></param>
     5     /// <param name="Appsecret"></param>
     6     /// <param name="Code">回调页面带的code参数</param>
     7     /// <returns>获取用户信息(json格式)</returns>
     8     public string GetUserInfo(string Appid, string Appsecret, string Code)
     9     {
    10         string url = string.Format("https://api.weixin.qq.com/sns/oauth2/access_token?appid={0}&secret={1}&code={2}&grant_type=authorization_code", Appid, Appsecret, Code);
    11         string ReText = CommonMethod.WebRequestPostOrGet(url, "");//post/get方法获取信息
    12         Dictionary<string, object> DicText = (Dictionary<string, object>)Jss.DeserializeObject(ReText);
    13         if (!DicText.ContainsKey("openid"))
    14         {
    15             CommonMethod.WriteTxt("获取openid失败,错误码:" + DicText["errcode"].ToString());
    16             return "";
    17         }
    18         else
    19         {
    20             System.Web.HttpContext.Current.Session["Oauth_Token"] = DicText["access_token"];
    21             System.Web.HttpContext.Current.Session.Timeout = 7200;
    22             return CommonMethod.WebRequestPostOrGet("https://api.weixin.qq.com/sns/userinfo?access_token=" + DicText["access_token"] + "&openid=" + DicText["openid"] + "&lang=zh_CN", "");
    23         }
    24     }
    View Code

    方法已经写好,只要传入appid、appsecret、code三个参数就可以返回带用户个人信息的json数据包,格式如下:

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

     QQ群:C#.NETWEB程序开发交流

  • 相关阅读:
    Eureka 服务的注册和发现
    springcloud 中文文档
    mysql 7 种 join
    通用 mapper
    docker 容器操作( 以 tomcat 为例 )
    linux下安装phpunit简单方法
    图片优化的几个小工具
    安装基准测试工具sysbench
    安装pcntl以实现php多进程
    安装memcache及php的memcached模块
  • 原文地址:https://www.cnblogs.com/net-xiejun/p/4632711.html
Copyright © 2011-2022 走看看