【第三方登陸】之微信第三方登陸

微信太會賺錢了,要用這個開放平臺的登陸連接,收了300元大洋啊。雖然公司出錢,可是別人大公司賺錢分分鐘到手啊。api

 

https://open.weixin.qq.com/connect/qrconnect?appid=appid&redirect_uri=redirect_uri&response_type=code&scope=snsapi_login&state=STATE#wechat_redirect微信

 

首先,頁面的連接,把這個連接套在A標籤下,打開就是微信自動生成的一個二維碼。 PS:記得把APPID換掉,還有返回地址也換掉。session

還有,APPID必定要用開放平臺下:管理中心——》網站應用——》你建立的應用下的APPIDapp

 

被虐了很久,用的錯(公衆平臺的)APPID。告知我,Scope參數錯誤或沒有Scope權限。微信公衆平臺

        網站微信第三方登陸裏面,用的是 微信開放平臺  中申請的 APPID 和 APPSECRET。網站

 

2015年8月25日11:06:13url

        有點不明白的是,微信公衆平臺和微信開放平臺獲取的兩個用戶OPENID的值,居然不同。這讓人有點費解了?spa

 

       回調地址下的代碼以下:code

 

 public partial class WeiXinLogin : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            WeiXinLoginAPI();
        }

        public const string APPID = "";
        public const string APPSECRET = "";

        public void WeiXinLoginAPI()
        {
            string errorCode = "微信登陸過時,請從新登陸!";
            var code = Request.QueryString["Code"];
            try
            {
                if (!string.IsNullOrEmpty(code))
                {
                   
                    var client = new System.Net.WebClient();
                    client.Encoding = System.Text.Encoding.UTF8;
                    var url = string.Format("https://api.weixin.qq.com/sns/oauth2/access_token?appid={0}&secret={1}&code={2}&grant_type=authorization_code", APPID, APPSECRET, code);
                    var data = Tools.GetPage(url);
                    Log.Debug("第一個接口", data);
                    var serializer = new JavaScriptSerializer();
                    var obj = serializer.Deserialize<Dictionary<string, string>>(data);
                    string accessToken;
                    if (!obj.TryGetValue("access_token", out accessToken))
                        return;

                    var opentid = obj["openid"];
                    url = string.Format("https://api.weixin.qq.com/sns/userinfo?access_token={0}&openid={1}&lang=zh_CN", accessToken, opentid);
                    data = Tools.GetPage(url);
                    Log.Debug("第二個接口", data);
                    var userInfo = serializer.Deserialize<Dictionary<string, object>>(data);
                    #region 同步數據到您的平臺操做 Begin
                    if (opentid != null && userInfo["nickname"] != null)
                    {
                        try
                        {
                                Users _MTUsers =  GetModel( openid);  //獲取用戶信息
                  
                                if (_MTUsers == null)
                                {
                                  Insert(_MTUsers);  //若是不存在,建立
                                }
                                else
                                {
                                    _MTUsers.LastLogin = DateTime.Now;
                                    _MTUsers.LastUpdated = DateTime.Now;
                                    Instance.MTUsers.Business.Update(_MTUsers);  //存在則修改
                                }
                                Session["CurrentUser"] = _MTUsers;               //將當前登陸的用戶放入session中
                        }
                        catch (Exception ex)
                        {
                            Response.Write("異常信息:" + ex.ToString());
                        }

                    }
                    else
                    {
                        errorCode = "微信登陸身份過時";
                    }
                    #endregion
                }
            }
            catch (Exception ex)
            {
                Log.Debug("【異常】", errorCode + ";異常信息:" + ex.Message.ToString());
            }
          }
 }
相關文章
相關標籤/搜索