using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Pcb.Common { public class WeiXinOAuth { /// /// 获取微信Code /// /// 微信AppId /// 微信AppSecret /// 返回的登录地址,要进行Server.Un编码 /// true=微信内部登录 false=pc网页登录 public string GetWeiXinCode(string appId, string appSecret, string redirectUrl, bool isWap) { var r = new Random(); //微信登录授权 //string url = "https://open.weixin.qq.com/connect/qrconnect?appid=" + appId + "&redirect_uri=" + redirectUrl +"&response_type=code&scope=snsapi_login&state=STATE#wechat_redirect"; //微信OpenId授权 //string url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + appId + "&redirect_uri=" + redirectUrl +"&response_type=code&scope=snsapi_login&state=STATE#wechat_redirect"; //微信用户信息授权 var url = ""; if (isWap) { url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + appId + "&redirect_uri=" + redirectUrl + "&response_type=code&scope=snsapi_userinfo&state=STATE1811&connect_redirect=1#wechat_redirect"; } else { url = "https://open.weixin.qq.com/connect/qrconnect?appid=" + appId + "&redirect_uri=" + redirectUrl + "&response_type=code&scope=snsapi_login&state=STATE1811#wechat_redirect"; } return url; } /// /// 通过code获取access_token /// /// /// /// /// public WeiXinAccessTokenResult GetWeiXinAccessToken(string appId, string appSecret, string code) { string url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + appId + "&secret=" + appSecret + "&code=" + code + "&grant_type=authorization_code"; string jsonStr =new CaptureHelper().GetHtml(url,60*1000, Encoding.UTF8); var result = new WeiXinAccessTokenResult(); if (jsonStr.Contains("errcode")) { var errorResult = JsonHelper.DeserializeObject(jsonStr); result.ErrorResult = errorResult; result.Result = false; } else { var model = JsonHelper.DeserializeObject(jsonStr); result.SuccessResult = model; result.Result = true; } return result; } /// /// 拉取用户信息 /// /// /// /// public WeiXinHelper.WeiXinUserInfoResult GetWeiXinUserInfo(string accessToken, string openId) { string url = "https://api.weixin.qq.com/sns/userinfo?access_token=" + accessToken + "&openid=" + openId + "⟨=zh_CN"; string jsonStr = new CaptureHelper().GetHtml(url, Encoding.UTF8); var result = new WeiXinHelper.WeiXinUserInfoResult(); if (jsonStr.Contains("errcode")) { var errorResult = JsonHelper.DeserializeObject(jsonStr); result.ErrorMsg = errorResult; result.Result = false; } else { var userInfo = JsonHelper.DeserializeObject(jsonStr); result.UserInfo = userInfo; result.Result = true; } return result; } /// /// 通过code获取access_token 请求成功的实体 /// public class WeiXinAccessTokenModel { /// /// 接口调用凭证 /// public string access_token { get; set; } /// /// access_token接口调用凭证超时时间,单位(秒) /// public int expires_in { get; set; } /// /// 用户刷新access_token /// public string refresh_token { get; set; } /// /// 授权用户唯一标识 /// public string openid { get; set; } /// /// 用户授权的作用域,使用逗号(,)分隔 /// public string scope { get; set; } } public class WeiXinAccessTokenResult { public WeiXinAccessTokenModel SuccessResult { get; set; } public bool Result { get; set; } public WeiXinHelper.WeiXinErrorMsg ErrorResult { get; set; } } } }