1 WeChatWebApi.Models.WechatAccessTokenModel
///
/// 【微信用户令牌信息模型--类】
///
/// 摘要:
/// 微信发送的令牌信息,记录到当前程序的内存中。
///
///
public class WechatAccessTokenModel
{
///
/// 【令牌】
///
/// 摘要:
/// 获取/设置用户使用微信登录后,1个指定微信用户的令牌信息,开发者通过该信息让当前程序集成微信的第3方授权认证。
///
///
public string access_token { get; set; }
///
/// 【过期时间】
///
/// 摘要:
/// 获取/设置用户使用微信登录后,1个指定微信用户的令牌信息的过期时间,开发者通过该信息让当前程序集成微信的第3方授权认证,微信将其设定为7200秒=2小时。
///
///
public int expires_in { get; set; }
}
2 WeChatWebApi.Models.WechatAuthorizationCodeModel
namespace WeChatWebApi.Models
{
///
/// 【微信授权认证信息模型--类】
///
/// 摘要:
/// 微信发送的权认证信息,记录到当前程序的内存中。
///
///
public class WechatAuthorizationCodeModel
{
///
/// 【令牌】
///
/// 摘要:
/// 获取/设置用户使用微信登录后,1个指定微信用户的令牌信息,开发者通过该信息让当前程序集成微信的第3方授权认证。
///
///
public string access_token { get; set; }
///
/// 【过期时间】
///
/// 摘要:
/// 获取/设置用户使用微信登录后,1个指定微信用户的令牌信息的过期时间,开发者通过该信息让当前程序集成微信的第3方授权认证,微信将其设定为7200秒=2小时。
///
///
public int expires_in { get; set; }
///
/// 【刷新令牌】
///
/// 摘要:
/// 获取/设置用户使用微信登录后,1个指定微信用户的刷新令牌信息,开发者通过该信息让当前程序集成微信的第3方授权认证。
///
///
public string refresh_token { get; set; }
///
/// 【唯一标识】
///
/// 摘要:
/// 获取/设置用户使用微信登录后,1个指定微信用户的唯一标识。
///
///
public string openid { get; set; }
///
/// 【作用域】
///
/// 摘要:
/// 获取/设置用户使用微信登录后,1个指定微信用户的所使用的授权作用域,该作用域的值一般情况下由开发者根据程序功能直接写死。
/// 说明:
/// 使用域不同,当前程序从能同1个微信Api中获取的数据也不相同,要想获取微信登录用户的信息作用哉的值必须为:"snsapi_userinfo"。
///
///
public string scope { get; set; }
}
}
3 WeChatWebApi.Models.WechatLoginUserInfoModel
namespace WeChatWebApi.Models
{
///
/// 【微信登录微信用户信息模型模型--类】
///
/// 摘要:
/// 微信发送的登录微信用户信息,记录到当前程序的内存中。
///
///
public class WechatLoginUserInfoModel
{
///
/// 【唯一标识】
///
/// 摘要:
/// 获取/设置用户使用微信登录后,1个指定微信用户的唯一标识。
///
///
public string openid { get; set; }
///
/// 【昵称】
///
/// 摘要:
/// 获取/设置用户使用微信登录后,1个指定微信用户的昵称。
///
///
public string nickname { get; set; }
///
/// 【性别】
///
/// 摘要:
/// 获取/设置用户使用微信登录后,1个指定微信用户的性别。
///
///
public int sex { get; set; }
///
/// 【语言】
///
/// 摘要:
/// 获取/设置用户使用微信登录后,1个指定微信用户所使用的语言。
///
///
public string language { get; set; }
///
/// 【城市】
///
/// 摘要:
/// 获取/设置用户使用微信登录后,1个指定微信用户所在的城市。
///
///
public string city { get; set; }
///
/// 【省/直辖市/州】
///
/// 摘要:
/// 获取/设置用户使用微信登录后,1个指定微信用户所在的省/直辖市/州。
///
///
public string province { get; set; }
///
/// 【省/直辖市/州】
///
/// 摘要:
/// 获取/设置用户使用微信登录后,1个指定微信用户所在的省/直辖市/州。
///
///
public string country { get; set; }
///
/// 【头像图片URL】
///
/// 摘要:
/// 获取/设置用户使用微信登录后,1个指定微信用户的头像图片的URL字符串。
///
///
public string headimgurl { get; set; }
///
/// 【省/直辖市/州】
///
/// 摘要:
/// 获取/设置用户使用微信登录后,用户特权信息,json 数组,如微信沃卡用户为(chinaunicom)。
///
///
public object[] privilege { get; set; }
}
}
4 重构WeChatGetCode.Controllers.HomeController
/// name="weChatCode">从微信浏览器中获取的code值。
///
/// 【使用微信进行登录时获取微信提供的授权认证信息】
///
/// 摘要:
/// 当前程序使用使用微信进行身份认证后进行授权登录时,获取微信提供的授权认证信息。
///
///
/// 返回:
/// 微信授权认证信息模型实例。
///
///
[HttpGet]
public WechatAuthorizationCodeModel GetWechatAuthorizationCode(string weChatCode)
{
var url = $"https://api.weixin.qq.com/sns/oauth2/access_token?appid={AppId}&secret={AppSecret}&code={weChatCode}&grant_type=authorization_code";
var httpClient = new HttpClient();
var result = httpClient.GetStringAsync(url).Result;
//return JsonSerializer.Deserialize
return JsonSerializer.Deserialize
}
///
/// 【获取code的回调URL为微信用户信息】
///
/// 摘要:
/// 当前程序使用使用微信进行身份认证后进行授权登录时,微信服务器向当前程序发送的code值,该code值为使用微信进行登录时获取微信用户的信息提供参数支持。
///
///
/// 返回:
/// URL字符串,该字符串用于从微信浏览器中获取1个指定的code值,该code值为使用微信进行登录时获取微信用户的信息提供参数支持。
///
///
[HttpGet]
public string GetUrlToPrivacyBySnsapi_userinfo()
{
var RedirectUri1 = "https://7cn7680860.imdo.co/Home/Privacy";
//要想使用微信授权,并获取该微信登录用户的信息,Scope的参数值必须为:"snsapi_userinfo",而不能为:"snsapi_base",否则会出现异常:“errcode“:48001“errmsg“:“api unauthorized...“”
var Scope = "snsapi_userinfo";
var State = "123";
var url = $"https://open.weixin.qq.com/connect/oauth2/authorize?appid={AppId}&redirect_uri={HttpUtility.UrlEncode(RedirectUri1)}&response_type=code&scope={Scope}&state={State}#wechat_redirect";
return url;
}
/// name="weChatCode">从微信浏览器中获取的code值。
///
/// 【使用微信进行登录时获取微信用户的信息】
///
/// 摘要:
/// 当前程序使用使用微信进行身份认证后进行授权登录时,获取已经登录的指定微信用户相关信息。
/// 注意:
/// 想要获取登录时微信用户的信息,Scope的参数值必须为:"snsapi_userinfo",而不能为:"snsapi_base",否则会出现异常:“errcode“:48001“errmsg“:“api unauthorized...“”,
/// 所该方法中所需要code值必须从“GetUrlToPrivacyBySnsapi_userinfo”中获取。
///
///
/// 返回:
/// 微信登录微信用户信息模型实例。
///
///
[HttpGet]
public WechatLoginUserInfoModel GetWechatLoginUserInfo(string weChatCode)
{
var url = $"https://api.weixin.qq.com/sns/oauth2/access_token?appid={AppId}&secret={AppSecret}&code={weChatCode}&grant_type=authorization_code";
var httpClient = new HttpClient();
var result = httpClient.GetStringAsync(url).Result;
var wechatAuthorizationCode = JsonSerializer.Deserialize
var url1 = $"https://api.weixin.qq.com/sns/userinfo?access_token={wechatAuthorizationCode.access_token}&&openid={wechatAuthorizationCode.openid}";
var result1 = httpClient.GetStringAsync(url1).Result;
return JsonSerializer.Deserialize
}
///
/// 【使用微信进行登录时获取微信用户的令牌信息】
///
/// 摘要:
/// 当前程序使用使用微信进行身份认证后进行授权登录时,获取已经登录的指定微信用户的令牌信息。
///
///
/// 返回:
/// 微信登录微信用户令牌信息模型实例。
///
///
[HttpGet]
public WechatAccessTokenModel GetWechatAccessToken()
{
var url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=wxc7337c066242de8b&secret=85901b3e6cbec634298c1707afcf915e";
var httpClient = new HttpClient();
var result = httpClient.GetStringAsync(url).Result;
return JsonSerializer.Deserialize
}
对以上功能更为具体实现和注释见:230807_006WeChatWebApi(间接通过code获取微信网页授权中的微信access_token)。