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; }
}
}
}