1. 程式人生 > >C# 獲取關注微信公眾號後訪問人的openid進行功能擴充套件

C# 獲取關注微信公眾號後訪問人的openid進行功能擴充套件

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Net;
using System.Web.Script.Serialization;

namespace WebClientSearchApp
{
    public partial class GetWeiXinCode : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!base.IsPostBack)
            {
                string str = base.Server.UrlEncode("http://www.xxxx.com.cn/WeiXin/GetWeiXinCode.aspx");
                string text = base.Request.QueryString["Code"];
                if (string.IsNullOrEmpty(text))
                {
                    string url = string.Format("https://open.weixin.qq.com/connect/oauth2/authorize?appid={0}&redirect_uri=" + str + "&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect", ConfigurationManager.AppSettings["AppId"]);
                    base.Response.Redirect(url);
                    return;
                }
                WebClient webClient = new WebClient();
                webClient.Encoding =System.Text.Encoding.UTF8;
                string address = string.Format("https://api.weixin.qq.com/sns/oauth2/access_token?appid={0}&secret={1}&code={2}&grant_type=authorization_code", ConfigurationManager.AppSettings["AppId"], ConfigurationManager.AppSettings["AppSecret"], text);
                string input = webClient.DownloadString(address);
                JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();
                Dictionary<string, string> dictionary = javaScriptSerializer.Deserialize<Dictionary<string, string>>(input);
                string text2;
                if (!dictionary.TryGetValue("access_token", out text2))
                {
                    return;
                }
                string opentid = dictionary["openid"];
                using (ClientSearchDataContext clientSearchDataContext = new ClientSearchDataContext())
                {
                    IQueryable<WeiXinApiToken> source = from p in clientSearchDataContext.WeiXinApiToken
                                                                                            where p.OpenID == opentid
                                                                                            select p;
                    if (source.Count<WeiXinApiToken>() > 0)
                    {
                        base.Response.Redirect("http://www.xxxx.com.cn/WeiXin/UserBind.aspx?status=succes&openid= " + opentid);
                    }
                    else
                    {
                        base.Response.Redirect("http://www.xxxx.com.cn/WeiXin/UserBind.aspx?openid=" + opentid);
                    }
                }
            }
        }
    }
}

config 配置檔案:

  <appSettings>
    <add key="SqlserverConnectionString" value="data source=192.168.33.13;User ID=sa;pwd=sa;Initial Catalog=xxxx;" />
    <add key="DBConnectionError" value="資料庫連線失敗。" />
    <add key="MaxWeeks" value="13" />
    <add key="MinPWD" value="8" />
    <add key="ThemeRoot" value="Default" />
    <add key="MiniteInterval" value="15" />
    <add key="TimeLimit" value="2013-07-20" />
   <!--微信的Token-->

   <add key="WeixinToken" value="haixinda"/>
    //開發者ID(AppID)
<add key="AppId" value="wx55d5944a0be2d2e6b906"/> //開發者密匙 <add key="AppSecret" value="444444444444"/> </appSettings>
AppId、AppSecret 都可以登陸微信公眾平臺後找到

獲取訪問公眾號連結得到的openid

http://www.xxxx.com.cn/WeiXin/UserBind.aspx?openid=oepJesytIaBw4BSxENiv8geHddfdffdCE