.netcore获取微信openid与unionid方法

最近项目需要用到微信一键授权登录到APP和小程序,在此记录一下.netcore是如何集成微信登录获取unionid以及openid的。

注意事项

  • OpenId 是一个用户对于一个小程序/公众号/APP的标识,开发者可以通过这个标识识别出用户;同一个人,使用不同的小程序,会留下不同的小程序 OpenId 。获取小程序 OpenId 无需用户操作和授权。
  • UnionId 是一个用户对于同主体微信小程序/公众号/APP的标识,开发者需要在微信开放平台下绑定相同账号的主体,开发者可通过 UnionId 可以实现多个小程序、公众号、甚至APP之间的数据互通;正常情况下,微信生态中 UnionId 是用户身份的唯一标识。所以,如果开发者拥有多个移动应用、网站应用、和公众帐号(包括小程序),可通过 UnionId 来区分用户的唯一性。

准备工作

1.先去微信开放平台注册并绑定APP/小程序
2.在管理中心->应用详情页面获取APPID和Secert,如下图。

代码实现

获取OpenID给前端调用

        /// <summary>
        /// 获取微信unionid、openid
        /// </summary>
        /// <param name="jscode"></param>
        /// <returns></returns>
        [HttpPost(nameof(WxLogin))]
        public async ValueTask<IActionResult> WxLogin(string jscode)
        {
            string smallAppId = ""; //你的APPID
            string smallSecretKey = ""; //你的Secret
            //去腾讯服务器换取openid
            var url = $"https://api.weixin.qq.com/sns/jscode2session?appid={smallAppId}&secret={smallSecretKey}&js_code={jscode)}&grant_type=authorization_code";
            var resp = await new HttpClient().GetStringAsync(url);
            if (string.IsNullOrEmpty(resp))
            {
                return Json(new
                {
                    Suc = false,
                    Msg = "获取失败"
                });
            }
            else
            {
                var json = Newtonsoft.Json.JsonConvert.DeserializeObject<dynamic>(resp);
                //若有多端且共用一个主体,则用unionid
                string unionid = json?.unionid ?? "";
                //若只有一端,则用openid
                string openid = json?.session_key ?? "";
                string sessionKey = json?.openid ? ? "";
                return Json(new
                {
                    Suc = true,
                    Msg = "获取成功",
                    OpenId = openId,
                    UnionId = unionid,
                    SessionKey = sessionKey
                });
            }
        }

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值