Ejemplo n.º 1
0
        private void OAuthTest(String platformCode)
        {
            String authorizeUrl = String.Empty;

            if (String.IsNullOrEmpty(platformCode))
            {
                platformCode = "qq";
            }

            //Console.WriteLine("OpenPlatform Request For " + platformCode);
            //Console.WriteLine("");

            IOAuthClient oauthClient = m_oauthClients[platformCode];

            oauthClient.Option.State = platformCode;

            //第一步:获取开放平台授权地址
            authorizeUrl = m_oauthClients[platformCode].GetAuthorizeUrl(ResponseType.Code);
            //Console.WriteLine("Step 1 - OAuth2.0 for Redirect AuthorizeUrl: ");
            //Console.WriteLine(authorizeUrl);

            //第二步:打开IE浏览器获取Code
            Process          p   = new Process();
            ProcessStartInfo psi = new ProcessStartInfo();

            psi.Arguments = authorizeUrl;
            psi.FileName  = "C:\\Program Files\\Internet Explorer\\iexplore.exe";
            p.StartInfo   = psi;
            p.Start();

            //Console.WriteLine("");
            //Console.WriteLine("OAuth2.0 Input Server Response Code");
            String code = Console.ReadLine();

            //第三步:获取开放平台授权令牌
            oauthClient = m_oauthClients[platformCode];
            AuthToken accessToken = oauthClient.GetAccessTokenByAuthorizationCode(code);

            if (accessToken != null)
            {
                //Console.WriteLine("");
                //Console.WriteLine("Step 2 - OAuth2.0 for AccessToken: " + accessToken.AccessToken);
                ////输出原始响应数据
                //Console.WriteLine("GetAccessToken Raw Response : ");
                //Console.WriteLine(oauthClient.Token.TraceInfo);

                //第四步:调用开放平台API,获取开放平台用户信息
                dynamic oauthProfile = oauthClient.User.GetUserInfo();

                ////输出解析出来的用户昵称
                //Console.WriteLine("");
                //Console.WriteLine("Step 3 - Call Open API UserInfo: ");
                //Console.WriteLine("UserInfo Nickname: " + oauthClient.Token.User.Nickname);
                ////输出原始响应数据
                //Console.WriteLine("GetUserInfo Raw Response : ");
                //Console.WriteLine(oauthClient.Token.TraceInfo);
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// QQ登陆授权回调
        /// </summary>
        /// <returns></returns>
        public ActionResult Service()
        {
            string xmlDataPath        = Server.MapPath("~/DataXML/AuthorizeXML.xml");
            string serverCallBackCode = Request["code"];
            //第二步:认证成功获取Code
            Dictionary <string, IOAuthClient> m_oauthClients = new Dictionary <string, IOAuthClient>();
            AuthToken accessToken = oauthClient.GetAccessTokenByAuthorizationCode(serverCallBackCode);

            if (accessToken.AccessToken == null)
            {
                return(Content("认证失败"));
            }
            oauthClient.User.GetUserInfo();
            Log.Write(LogLevel.Debug, JsonConvert.SerializeObject(accessToken));
            string nickName       = oauthClient.Token.User.Nickname;
            string openId         = oauthClient.Token.OAuthId;
            string responseResult = oauthClient.Token.TraceInfo;
            var    user           = JsonConvert.DeserializeObject <QQUserInfo>(oauthClient.Token.TraceInfo);

            ViewBag.user = user;
            return(View());
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 回调地址
        /// </summary>
        /// <returns></returns>
        public ActionResult QQLoginCallback()
        {
            string xmlDataPath        = Server.MapPath("~/DataXML/AuthorizeXML.xml");
            string serverCallBackCode = Request["code"];
            //第二步:认证成功获取Code
            Dictionary <String, IOAuthClient> m_oauthClients = new Dictionary <string, IOAuthClient>();
            AuthToken accessToken = oauthClient.GetAccessTokenByAuthorizationCode(serverCallBackCode);

            if (accessToken == null)
            {
                return(Content("认证失败"));
            }
            var db   = DBContext.CreateContext();
            var user = db.QQUser_info.Where(x => x.OpenId.Contains(oauthClient.Token.OAuthId)).FirstOrDefault();

            if (user == null)
            {
                user = new QQUser_info
                {
                    Nickname  = oauthClient.Token.User.Nickname,
                    OpenId    = oauthClient.Token.OAuthId,
                    Figureurl = oauthClient.Token.User.AvatarUrl,
                    Gender    = oauthClient.Token.User.Sex,
                };
                db.QQUser_info.Add(user);
                db.SaveChanges();
                StringBuilder str = new StringBuilder();
                str.AppendLine("<h2>恭喜您,QQ认证成功 </h2><br />");
                str.AppendLine("****************获取信息begin**************** <br />");
                str.AppendLine("获取到您的昵称:" + nickName + "大智障 <br />");
                str.AppendLine("获取到您的openId:" + user.OpenId + "  <br />");
                str.AppendLine("获取到您的头像: <img src=" + user.Figureurl + "  />  <br /> ");
                str.AppendLine("****************获取信息end**************** <br /> ");
            }
            ViewBag.user = user;
            return(View());
        }
        public string ThirdLoginCallback(string code, string loginType = "qq")
        {
            //第三步:获取开放平台授权令牌
            IOAuthClient oauthClient  = GetOAuthClient(loginType);
            AuthToken    accessToken  = oauthClient.GetAccessTokenByAuthorizationCode(code);
            dynamic      oauthProfile = oauthClient.User.GetUserInfo();

            if (accessToken != null && !string.IsNullOrEmpty(oauthClient.Token.User.OAuthId))
            {
                BLL.BaseBLL <BlogUserInfo> userInfo = new BLL.BaseBLL <BlogUserInfo>();
                var userInfoMode = userInfo.GetList(t => t.OAuthId == oauthClient.Token.User.OAuthId && t.OAuthName == loginType).FirstOrDefault();
                if (null == userInfoMode)
                {
                    BLL.BaseBLL <BlogUser> user = new BLL.BaseBLL <BlogUser>();
                    user.Insert(new BlogUser()
                    {
                        IsLock       = true,
                        UserMail     = "无效",
                        UserName     = oauthClient.Token.User.OAuthId + "_" + loginType,
                        UserNickname = oauthClient.Token.User.Nickname,
                        UserPass     = "******".MD5().MD5(),
                        IsDelte      = false,
                        BlogUserInfo = new BlogUserInfo()
                        {
                            OAuthId   = oauthClient.Token.User.OAuthId,
                            OAuthName = loginType,
                            BlogUpNum = 0,
                            IsDelte   = false
                        }
                    });
                    user.save(false);
                    userInfoMode = userInfo.GetList(t => t.OAuthId == oauthClient.Token.User.OAuthId && t.OAuthName == loginType).FirstOrDefault();
                    //BLL.Common.CacheData.GetAllUserInfo(true);
                }

                #region 设置cookie(等于设置了session,因为读session的时候会检测cookie)
                var        userTemp = userInfoMode.BlogUser;
                HttpCookie Cookie   = CookiesHelper.GetCookie("userInfo");
                if (Cookie == null)
                {
                    Cookie = new HttpCookie("userInfo");
                    Cookie.Values.Add("userName", userTemp.UserName);
                    Cookie.Values.Add("userPass", "pass");
                    //设置Cookie过期时间
                    Cookie.Expires = DateTime.Now.AddDays(365);
                    CookiesHelper.AddCookie(Cookie);
                }
                else
                {
                    if (!Cookie.Values["userName"].Equals(userTemp.UserName))
                    {
                        CookiesHelper.SetCookie("userInfo", "userName", userTemp.UserName);
                    }
                    if (!Cookie.Values["userPass"].Equals("pass"))
                    {
                        CookiesHelper.SetCookie("userInfo", "userPass", "pass");
                    }
                }
                //BLLSession.UserInfoSessioin = userInfoMode.BlogUser;
                #endregion

                return("ok");
            }
            return("no");
        }