微信公众号开发之网页授权登录获取用户openID

一、设置网页授权域名:设置——公众号设置——功能设置

微信公众号开发之网页授权登录获取用户openID_第1张图片

注意:如果设置的是域名则该网站下的所有页面都可以作为回调页面,如果设置的是某个目录则回调页面只能在该目录下

二、开始授权

    1、获取code:

        引导用户访问下面地址(是直接跳转还是点击链接按钮跳转自己决定)

        string server_url = "https://open.weixin.qq.com/connect/oauth2/authorize?";
        string param = "appid=xxxxxxxx&";//公众号APPID
        param += "redirect_uri=https://www.xxxxx.com/backup.aspx&";//自己定义回调地址
        param += "response_type=code&";
        param += "scope=snsapi_base&";//snsapi_base为静默授权,直接跳转回调页面,无需用户授权,只获取openID
        param += "state=1&";
        param += "connect_redirect=1#wechat_redirect";

        如果一切顺利则在定义的回调页面就会收到返回来的code

    2、通过code获取openID

        在回调页面通过code调用下面方法则获取到openID

    ///


    ///  获取openID
    ///

    ///
    ///
    public static string GetOpenId(string code)
    {
        string appId = ConfigurationManager.AppSettings["appid"];
        string appsecret = ConfigurationManager.AppSettings["secret"];

        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);
        System.Net.WebRequest wrq = System.Net.WebRequest.Create(url);
        wrq.Method = "GET";
        System.Net.WebResponse wrp = wrq.GetResponse();
        System.IO.StreamReader sr = new System.IO.StreamReader(wrp.GetResponseStream(), System.Text.Encoding.GetEncoding("UTF-8"));
        string jsonStr = sr.ReadToEnd();

        if (jsonStr != "" && jsonStr != null)
        {
            jsonStr = jsonStr.Substring(1, jsonStr.Length - 2);
            string[] jsonArray = jsonStr.Split(',');
            string flag = jsonArray[0].Split(':')[0];
            flag = flag.Substring(1, flag.Length - 2);
            string openId = "";
            if (flag == "access_token")
            {
                openId = jsonArray[3].Split(':')[1];
                openId = openId.Substring(1, openId.Length - 2);
            }
            else
            {
                openId = "";
                //INIFile.WriteText("【授权登录】获取openID失败,错误信息:" + jsonStr, "");
            }

            return openId;
        }
        else
        {
            return "";
        }
    }

你可能感兴趣的:(微信公众号开发之网页授权登录获取用户openID)