首先公衆號(服務號)必須認證過,每年繳納300元認證費。
然後在公衆裏面創建APPID和Secret,授權域名等操作,具體可以查看微信官方開發文檔。
private string openId = "";
private string accessToken = "";
/// <summary>
/// 獲取微信用戶資料,返回json
/// </summary>
/// <returns></returns>
private string GetWxInfo()
{
string appId = "您的APPID";
string secret = "您的Secret";
//調用【網頁授權獲取用戶信息】接口獲取用戶的openid和access_token
GetOpenID(appId, secret);
string url = "https://api.weixin.qq.com/sns/userinfo?access_token=" + accessToken + "&openid=" + openId + "&lang=zh_CN";
string result = HttpService.Get(url);
return result;
}
/// <summary>
/// 獲取OPENID和access_token
/// </summary>
/// <param name="appId"></param>
/// <param name="secret"></param>
private void GetOpenID(string appId, string secret)
{
if (!string.IsNullOrEmpty(this.Request.QueryString["code"]))
{
//獲取code碼,以獲取openid和access_token
string code = this.Request.QueryString["code"];
string url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + appId + "&secret=" + secret + "&code=" + code + "&grant_type=authorization_code";
string result = HttpService.Get(url);
JsonData jd = JsonMapper.ToObject(result);
openId = (string)jd["openid"];
accessToken = (string)jd["access_token"];
}
else
{
string host = this.Request.Url.Host;
string path = this.Request.Path;
string redirect_uri = HttpUtility.UrlEncode("https://" + host + path); //業務域名+路徑,跟公衆號後臺設置必須一致
string url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + appId + "&redirect_uri=" + redirect_uri + "&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect";
try
{
//觸發微信返回code碼
this.Response.Redirect(url);//Redirect函數會拋出ThreadAbortException異常,不用處理這個異常
}
catch
{
}
}
}
正常情況下,微信會返回下述JSON數據包給公衆號:
{
"subscribe": 1,
"openid": "o6_bmjrPTlm6_2sgVt7hMZOPfL2M",
"nickname": "Band",
"sex": 1,
"language": "zh_CN",
"city": "廣州",
"province": "廣東",
"country": "中國",
"headimgurl":"http://thirdwx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/0",
"subscribe_time": 1382694957,
"unionid": " o6_bmasdasdsad6_2sgVt7hMZOPfL"
"remark": "",
"groupid": 0,
"tagid_list":[128,2],
"subscribe_scene": "ADD_SCENE_QR_CODE",
"qr_scene": 98765,
"qr_scene_str": ""
}
小記:這裏用的接口是網頁授權token,另外一種是基礎token,接口地址不同,開發的時候要注意別選錯了。