微信公众号-菜单连接跳转网页,获取用户OpenId

7 篇文章 0 订阅

流程:

菜单跳转URL设置为(更改自己公众号的appid 以及设置点击按钮后跳转的地址:redirect_uri)

https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx5bfeba33ef3fbcc&redirect_uri=https://dreamchina.tech/&response_type=code&scope=&state=123#wechat_redirect
应用授权作用域,snsapi_base (不弹出授权页面,直接跳转,只能获取用户openid),snsapi_userinfo (弹出授权页面,可通过openid拿到昵称、性别、所在地。)

获取页面的URL 并从URL中获取参数code的值 将code作为参数post 到后台,由后台发送Get请求获取用户信息:

本案例采用.NET一般处理程序实现,现献上代码

代码一:后台

//有传Json数据
            if (context.Request.InputStream.Length > 0)
            {
                var reader = new StreamReader((context.Request.InputStream));
                string data = reader.ReadToEnd();
                JsonObj obj = JsonConvert.DeserializeObject<JsonObj>(data);
                string code = obj.Code;
                if (!string.IsNullOrEmpty(code))
                {
                    const string appid = "wx5b3dda33ef3227a";
                    const string secet = "3de6f73741c66f32821ce75c93cc3443";
                    string url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code"
                            .Replace("APPID", appid).Replace("SECRET", secet).Replace("CODE", code);

                    string errorCode;
                    //模拟Get请求
                    string jsonStr = HttpHelper.GetResponse(url, out errorCode);

                    WxObject wxobj = JsonConvert.DeserializeObject<WxObject>(jsonStr);
                    string opeinid = wxobj.openid;
                    if (string.IsNullOrEmpty(opeinid))
                    {
                        string smg = "当前用户信息无效".ToError();
                        context.Response.Write(smg);
                    }
                    else
                    {
                        string smg = opeinid.ToSuccess();
                        context.Response.Write(smg);
                    }
                }
                else
                {
                    string msg = "请在正规途径打开".ToError();
                    //未获取到Code
                    context.Response.Write(msg);
                }
                    
                context.Response.Flush();
            }

代码二:前台

app.callAjaxPost("../api/WxOAuth.ashx", data, function (result) {
                    if (result.msgType == "error") {
                        mui.alert(result.msg);
                    }
                    if (result.msgType == "success") {
                        setValue('IdCard', result.msg);
                    }

                });

成功后绑定openid至Id :IdCard输入框中

完结

  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值