域名注册网站推荐,亚马逊没有网站怎么做seo,医院做网站的风格,零件加工网背景
随着公司微信相关业务场景的不断拓展#xff0c;从最初的一个微信移动应用、然后发展成微信公众号应用、然后又有了微信小程序应用。但是随着应用的拓展#xff0c;如何保证相同用户的微信用户在不同应用中登录的同一个账号呢#xff1f;今天的主题就来了.NET微信网页…背景
随着公司微信相关业务场景的不断拓展从最初的一个微信移动应用、然后发展成微信公众号应用、然后又有了微信小程序应用。但是随着应用的拓展如何保证相同用户的微信用户在不同应用中登录的同一个账号呢今天的主题就来了.NET微信网页开发之通过UnionID机制解决多应用用户帐号统一问题。
UnionID 机制
如果开发者拥有多个移动应用、网站应用、和公众账号包括小程序可通过 UnionID 来区分用户的唯一性因为只要是同一个微信开放平台账号下的移动应用、网站应用和公众账号包括小程序用户的 UnionID 是唯一的。换句话说同一用户对同一个微信开放平台下的不同应用UnionID是相同的。
获取用户基本信息(UnionID机制)
在关注者与公众号产生消息交互后公众号可获得关注者的OpenID加密后的微信号每个用户对每个公众号的OpenID是唯一的。对于不同公众号同一用户的openid不同。公众号可通过本接口来根据OpenID获取用户基本信息包括语言和关注时间。 请注意如果开发者有在多个公众号或在公众号、移动应用之间统一用户账号的需求需要前往微信开放平台open.weixin.qq.com绑定公众号后才可利用UnionID机制来满足上述需求。 微信开放平台配置 登录地址https://open.weixin.qq.com/ 微信公众号微信登录配置
在基本配置中获取微信公众号的appid和appsecrect一定是要自己公众号的白名单是你在本地调试的微信项目的时候需要添加的你本地的ip地址不然获取不到你想要的accsee_token。 配置服务器地址url这里是你的项目与微信服务器通讯的地方一定不能填错Token是你项目中的将其复制到这里即可消息加密解密密钥是微信端随机生成的。 在微信公众号设置设置对应业务域名js接口安全域名以及网页授权域名 微信网页公众号获取用户UnionID用户统一标识 注意用户统一标识针对一个微信开放平台账号下的应用同一用户的 unionid 是唯一的只有当scope为snsapi_userinfo时返回 用户同意授权获取code
在确保微信公众账号拥有授权作用域scope参数的权限的前提下已认证服务号默认拥有scope参数中的snsapi_base和snsapi_userinfo 权限引导关注者打开如下页面 若提示“该链接无法访问”请检查参数是否填写错误是否拥有scope参数对应的授权作用域权限。跳转回调redirect_uri应当使用https链接来确保授权code的安全性并且是在微信公众号后台配置的网页授权域名的访问地址。 https://open.weixin.qq.com/connect/oauth2/authorize?appidAPPIDredirect_uriREDIRECT_URIresponse_typecodescopesnsapi_userinfostateSTATE#wechat_redirect 请求参数 通过code获取用户UnionID用户统一标识 获取code后请求以下链接获取access_tokenhttps://api.weixin.qq.com/sns/oauth2/access_token?appidAPPIDsecretSECRETcodeCODEgrant_typeauthorization_code
请求参数 返回参数 请求示例代码 public class WeChatLogin : Controller{/// summary/// 获取用户UnionID用户统一标识/// /summary/// param namestate自定义参数/param/// param namecode通过用户授权后得到的code/param/// returns/returnspublic async TaskResponse GetWeChatUnionID(string state, string code){string appId YourAppId;string appSecret YourAppSecret;string requestUrl $https://api.weixin.qq.com/sns/oauth2/access_token?appid{appId}secret{appSecret}code{code}grant_typeauthorization_code;using (var httpClient new HttpClient()){var httpRequest new HttpRequestMessage(HttpMethod.Get, requestUrl);using (var response await httpClient.SendAsync(httpRequest)){if (response.IsSuccessStatusCode){var responseString await response.Content.ReadAsStringAsync();var responseData JsonConvert.DeserializeObjectWeChatTokenResponse(responseString);return new Response{Code 1,Message responseData.UnionId};}else{var errorResponseString await response.Content.ReadAsStringAsync();var errorData JsonConvert.DeserializeObjectErrorResponse(errorResponseString);return new Response{Code 0,Message $Failed to get access token: {errorData.ErrMsg}};}}}}}public class WeChatTokenResponse{[JsonProperty(access_token)]public string AccessToken { get; set; }[JsonProperty(expires_in)]public int ExpiresIn { get; set; }[JsonProperty(refresh_token)]public string RefreshToken { get; set; }[JsonProperty(openid)]public string OpenId { get; set; }[JsonProperty(scope)]public string Scope { get; set; }[JsonProperty(is_snapshotuser)]public int IsSnapshotUser { get; set; }[JsonProperty(unionid)]public string UnionId { get; set; }}public class ErrorResponse{[JsonProperty(errcode)]public int ErrCode { get; set; }[JsonProperty(errmsg)]public string ErrMsg { get; set; }}.NET微信网页开发相关文章教程 https://github.com/YSGStudyHards/DotNetGuide 参考文章 https://developers.weixin.qq.com/doc/offiaccount/User_Management/Get_users_basic_information_UnionID.html