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); } }
/// <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()); }
/// <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"); }