public WeiboSession(UserWeiboSetting setting,string screenName,string friendName,string profileImg) { this.Setting = setting; this.ScreenName = screenName; this.WeiboFriendName = friendName; this.ProfileImg = profileImg; }
public WeiboSession(UserWeiboSetting setting) : this(setting,string.Empty) { }
public WeiboSession(UserWeiboSetting setting,string weiboFriendName) : this(setting, string.Empty,weiboFriendName, string.Empty) { }
public Result Update(UserWeiboSetting setting) { return db.update(setting); }
public Result Bind(UserWeiboSetting setting) { return db.insert(setting); }
private void redirectSinaWeiboRegister(WeiboType type, Common.SinaOAuthAccessToken token,string screenName,string profileImg) { UserWeiboSetting setting = new UserWeiboSetting { AccessToken = token.Token, ExpireIn = token.ExpiresIn, IsSync = 1, WeiboUid = token.UserID, RefreshToken = token.RefreshToken, WeiboType = type.Id, AppId = ctx.owner.Id, BindTime = DateTime.Now, WeiboName = type.Name }; WeiboSession session = new WeiboSession(setting,screenName,type.FriendName,profileImg); ctx.web.SessionSet(WeiboSession.SessionName,session); redirectUrl(to(new WeiboRegisterController().Bind) + "?type=" + setting.WeiboName); }
private void redirectQQWeiboRegister(WeiboType type, OauthKey key,string screenName,string profileImg) { UserWeiboSetting setting = new UserWeiboSetting { AccessToken = key.tokenKey, AccessSecret = key.tokenSecret, IsSync = 1, WeiboType = type.Id, AppId = ctx.owner.Id, BindTime = DateTime.Now, WeiboName = type.Name, WeiboUid = key.WeiboName }; WeiboSession session = new WeiboSession(setting, screenName, type.FriendName, profileImg); ctx.web.SessionSet(WeiboSession.SessionName, session); redirectUrl(to(new WeiboRegisterController().Bind) + "?type=" + setting.WeiboName); }
public void SinaWeiboCallback() { string code = ctx.Get("code"); if (string.IsNullOrEmpty(code)) { return; } WeiboType type = WeiboType.GetByName("sina"); if (type == null) { log.Error("找不到 sina 的 WeiboType,请添加"); return; } SinaWeibo w = new SinaWeibo(type.AppKey, type.AppSecret); Common.SinaOAuthAccessToken token = w.GetAccessTokenByAuthorizationCode(code, ctx.url.SiteUrl.TrimEnd('/') + to(SinaWeiboCallback)); UserWeiboSetting setting = _weiboService.Find(type.Id, token.Token,string.Empty); //如果用户已经微博绑定此帐户 if (setting != null) { //这里做用户登陆处理 User user = userService.GetById(setting.UserId); if (user != null) { loginService.Login(user, LoginTime.OneMonth, ctx.Ip, ctx); redirectUrl("/"); return; } else { echoRedirect("发生未知错误,请重试"); return; } } w.SetToken(token.Token); Data.Sina.User.UserInfo weiboUser = w.GetUserInfo(long.Parse(token.UserID)); if (weiboUser == null) { echoRedirect("很抱歉,获取失败,请重试", to(Index)); return; } //用户是未登陆,那就是用户通过微博注册或是通过此微博直接登陆 if (!ctx.viewer.IsLogin) { redirectSinaWeiboRegister(type, token,weiboUser.ScreenName,weiboUser.ProfileImageUrl); return; } //判断用户是否已经绑定了微博,没有绑定则添加,否则更新token setting = _weiboService.Find(ctx.viewer.Id, type.Id); Result result; if (setting == null) { setting = new UserWeiboSetting(); } setting.WeiboUid = token.UserID; setting.RefreshToken = token.RefreshToken; setting.WeiboType = type.Id; setting.WeiboName = type.Name; setting.IsSync = 1; setting.AccessToken = token.Token; setting.RefreshToken = token.RefreshToken; setting.ExpireIn = token.ExpiresIn; setting.BindTime = DateTime.Now; setting.UserId = ctx.viewer.Id; if (setting.Id==default(int)) result = _weiboService.Bind(setting); else result = _weiboService.Update(setting); if (result.HasErrors) { errors.Errors.AddRange(result.Errors); string error = string.Empty; result.Errors.ForEach(c => error = error + c + System.Environment.NewLine); log.Error(error); echoRedirect("很抱歉,绑定失败,请重试", to(Index)); } else { echoRedirect("绑定成功"); } }