using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
|
namespace Pcb.Common
|
{
|
public class WeiXinOAuth
|
{
|
/// <summary>
|
/// 获取微信Code
|
/// </summary>
|
/// <param name="appId">微信AppId</param>
|
/// <param name="appSecret">微信AppSecret</param>
|
/// <param name="redirectUrl">返回的登录地址,要进行Server.Un编码</param>
|
/// <param name="isWap">true=微信内部登录 false=pc网页登录</param>
|
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;
|
}
|
/// <summary>
|
/// 通过code获取access_token
|
/// </summary>
|
/// <param name="appId"></param>
|
/// <param name="appSecret"></param>
|
/// <param name="code"></param>
|
/// <returns></returns>
|
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<WeiXinHelper.WeiXinErrorMsg>(jsonStr);
|
result.ErrorResult = errorResult;
|
result.Result = false;
|
}
|
else
|
{
|
var model = JsonHelper.DeserializeObject<WeiXinAccessTokenModel>(jsonStr);
|
result.SuccessResult = model;
|
result.Result = true;
|
}
|
return result;
|
}
|
/// <summary>
|
/// 拉取用户信息
|
/// </summary>
|
/// <param name="accessToken"></param>
|
/// <param name="openId"></param>
|
/// <returns></returns>
|
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<WeiXinHelper.WeiXinErrorMsg>(jsonStr);
|
result.ErrorMsg = errorResult;
|
result.Result = false;
|
}
|
else
|
{
|
var userInfo = JsonHelper.DeserializeObject<WeiXinHelper.WeiXinUserInfo>(jsonStr);
|
result.UserInfo = userInfo;
|
result.Result = true;
|
}
|
return result;
|
}
|
|
/// <summary>
|
/// 通过code获取access_token 请求成功的实体
|
/// </summary>
|
public class WeiXinAccessTokenModel
|
{
|
/// <summary>
|
/// 接口调用凭证
|
/// </summary>
|
public string access_token { get; set; }
|
/// <summary>
|
/// access_token接口调用凭证超时时间,单位(秒)
|
/// </summary>
|
public int expires_in { get; set; }
|
/// <summary>
|
/// 用户刷新access_token
|
/// </summary>
|
public string refresh_token { get; set; }
|
/// <summary>
|
/// 授权用户唯一标识
|
/// </summary>
|
public string openid { get; set; }
|
/// <summary>
|
/// 用户授权的作用域,使用逗号(,)分隔
|
/// </summary>
|
public string scope { get; set; }
|
}
|
|
public class WeiXinAccessTokenResult
|
{
|
public WeiXinAccessTokenModel SuccessResult { get; set; }
|
public bool Result { get; set; }
|
|
public WeiXinHelper.WeiXinErrorMsg ErrorResult { get; set; }
|
}
|
}
|
}
|