zoukankan      html  css  js  c++  java
  • 【第三方登录】之微信第三方登录

    微信太会赚钱了,要用这个开放平台的登录链接,收了300元大洋啊。虽然公司出钱,但是别人大公司赚钱分分钟到手啊。

    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换掉,还有返回地址也换掉。

    还有,APPID一定要用开放平台下:管理中心——》网站应用——》你创建的应用下的APPID

    被虐了好久,用的错(公众平台的)APPID。告知我,Scope参数错误或没有Scope权限。

            网站微信第三方登录里面,用的是 微信开放平台  中申请的 APPID 和 APPSECRET。

    2015年8月25日11:06:13

            有点不明白的是,微信公众平台和微信开放平台获取的两个用户OPENID的值,竟然不一样。这让人有点费解了?

     

           回调地址下的代码如下:

     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());
                }
              }
     }
  • 相关阅读:
    cocos2d-x 纹理研究
    cocos2d-x 获取图片的某像素点的RGBA颜色
    cocos2d-x Menu、MenuItem
    cocos2d-x ScrollView、TableView
    cocos2d-x RenderTexture
    cocos2d-x NotificationCenter
    cocos2d-x ClippingNode
    cocos2d-x Animation
    JDK,JRE,JVM区别与联系(ZZ)
    SQL中join的用法
  • 原文地址:https://www.cnblogs.com/vincentvoid/p/4646105.html
Copyright © 2011-2022 走看看