Exemple #1
0
        public override async Task <FacebookProcessResult> Process(SocialAccount socialAccount, FbHookChange change)
        {
            var result = new FacebookProcessResult(NotificationManager);

            if (IsWallPost(change) && !socialAccount.IfConvertWallPostToConversation)
            {
                return(result);
            }
            if (!IsWallPost(change) && !socialAccount.IfConvertVisitorPostToConversation)
            {
                return(result);
            }

            string token = socialAccount.Token;

            if (IsDuplicatedMessage(MessageSource.FacebookPost, change.Value.PostId))
            {
                return(result);
            }

            FbPost post = await FbClient.GetPost(socialAccount.Token, change.Value.PostId);

            SocialUser sender = await GetOrCreateFacebookUser(socialAccount.Token, post.from.id);

            Message message = FacebookConverter.ConvertToMessage(post);

            message.SenderId = sender.Id;
            if (message.SenderId != socialAccount.Id)
            {
                message.ReceiverId = socialAccount.Id;
            }
            var conversation = new Conversation
            {
                OriginalId          = change.Value.PostId,
                Source              = ConversationSource.FacebookVisitorPost,
                Priority            = ConversationPriority.Normal,
                Status              = ConversationStatus.New,
                Subject             = GetSubject(message.Content),
                LastMessageSenderId = message.SenderId,
                LastMessageSentTime = message.SendTime
            };

            if (change.Value.Verb == "add" && message.SenderId == socialAccount.Id)
            {
                conversation.Source   = ConversationSource.FacebookWallPost;
                conversation.IsHidden = true;
            }

            conversation.Messages.Add(message);
            await AddConversation(socialAccount, conversation);

            await CurrentUnitOfWork.SaveChangesAsync();

            if (!conversation.IsHidden)
            {
                result.WithNewConversation(conversation);
            }

            return(result);
        }
Exemple #2
0
        public override async Task <SocialUser> GetUserInfoAsync(Account account)
        {
            SocialUser user        = null;
            string     token       = account.Properties["access_token"];
            string     refreshToke = account.Properties["refresh_token"];
            int        expriesIn;

            int.TryParse(account.Properties["expires_in"], out expriesIn);


            var request  = new OAuth2Request("GET", UserInfoUri, null, account);
            var response = await request.GetResponseAsync();

            if (response != null && response.StatusCode == HttpStatusCode.OK)
            {
                string userJson = await response.GetResponseTextAsync();

                var googleUser = JsonConvert.DeserializeObject <GoogleUser>(userJson);
                user = new SocialUser
                {
                    SocialId     = googleUser.Sub,
                    Token        = token,
                    RefreshToken = null,
                    Name         = googleUser.Name,
                    Email        = googleUser.Email,
                    ExpiresIn    = DateTime.UtcNow.Add(new TimeSpan(expriesIn)),
                    PictureUrl   = googleUser.Picture,
                    Provider     = SocialProvider.Google,
                    LoggedInWithSocialAccount = true,
                };
            }
            return(user);
        }
Exemple #3
0
    protected void bt_register_Click(object sender, EventArgs e)
    {
        // Response.Redirect("/asd.aspx");
        SocialUser social = new SocialUser();

        social.email    = Email.Text;
        social.username = LoginName.Text;
        social.id       = hidden_id.Value;
        InsertNewUser(social);

        try
        {
            using (WebClient client = new WebClient())
            {
                byte[] response =
                    client.UploadValues("https://api.madmimi.com/audience_lists/Owners/add", new NameValueCollection()
                {
                    { "username", "*****@*****.**" },
                    { "api_key", "9881316569391d3dbfba35b71670b4b2" },
                    { "email", Email.Text },
                    { "first_name", LoginName.Text }
                });

                //string result = System.Text.Encoding.UTF8.GetString(response);
            }
        }
        catch
        {
        }
    }
Exemple #4
0
 private static void ValidateSocialUser(SocialUser socialUser, string email)
 {
     if (socialUser == null || socialUser.Email == null || email == null || socialUser.Email.ToLower() != email.ToLower())
     {
         throw new BusinessException("Invalid parameters");
     }
 }
        /// <summary>
        /// 修改指定的数据
        /// <param name="e">修改后的数据实体对象</param>
        /// <para>数据对应的主键必须在实例中设置</para>
        /// </summary>
        public void Update(SocialUser e)
        {
            MySqlConnection oc = ConnectManager.Create();
            MySqlCommand    _cmdUpdateSocialUser = cmdUpdateSocialUser.Clone() as MySqlCommand;

            _cmdUpdateSocialUser.Connection = oc;

            try
            {
                if (oc.State == ConnectionState.Closed)
                {
                    oc.Open();
                }

                _cmdUpdateSocialUser.Parameters["@SocialUserType"].Value    = e.SocialUserType;
                _cmdUpdateSocialUser.Parameters["@AccessToken"].Value       = e.AccessToken;
                _cmdUpdateSocialUser.Parameters["@AccessTokenSecret"].Value = e.AccessTokenSecret;
                _cmdUpdateSocialUser.Parameters["@Uid"].Value    = e.Uid;
                _cmdUpdateSocialUser.Parameters["@UserId"].Value = e.UserId;

                _cmdUpdateSocialUser.ExecuteNonQuery();
            }
            finally
            {
                oc.Close();
                oc.Dispose();
                oc = null;
                _cmdUpdateSocialUser.Dispose();
                _cmdUpdateSocialUser = null;
                GC.Collect();
            }
        }
        /// <summary>
        /// 添加数据
        /// <param name="es">数据实体对象数组</param>
        /// <returns></returns>
        /// </summary>
        public bool Insert(SocialUser e)
        {
            MySqlConnection oc = ConnectManager.Create();
            MySqlCommand    _cmdInsertSocialUser = cmdInsertSocialUser.Clone() as MySqlCommand;
            bool            returnValue          = false;

            _cmdInsertSocialUser.Connection = oc;
            try
            {
                if (oc.State == ConnectionState.Closed)
                {
                    oc.Open();
                }
                _cmdInsertSocialUser.Parameters["@SocialUserType"].Value    = e.SocialUserType;
                _cmdInsertSocialUser.Parameters["@AccessToken"].Value       = e.AccessToken;
                _cmdInsertSocialUser.Parameters["@AccessTokenSecret"].Value = e.AccessTokenSecret;
                _cmdInsertSocialUser.Parameters["@Uid"].Value    = e.Uid;
                _cmdInsertSocialUser.Parameters["@UserId"].Value = e.UserId;

                _cmdInsertSocialUser.ExecuteNonQuery();
                return(returnValue);
            }
            finally
            {
                oc.Close();
                oc.Dispose();
                oc = null;
                _cmdInsertSocialUser.Dispose();
                _cmdInsertSocialUser = null;
            }
        }
Exemple #7
0
        /// <summary>
        /// 判断是否绑定了社交账户,如果有绑定则自动登录,并返回token
        /// </summary>
        /// <param name="socialUser"></param>
        /// <returns></returns>
        public AdvancedResult <string> IsBindSocialUser(SocialUser socialUser)
        {
            AdvancedResult <string> result = new AdvancedResult <string>();

            try
            {
                SocialUser suer = SocialUserAccessor.Instance.Get(socialUser.Uid, socialUser.SocialUserType);
                if (suer != null)
                {
                    //刷新access_token
                    suer.AccessToken       = socialUser.AccessToken;
                    suer.AccessTokenSecret = socialUser.AccessTokenSecret;
                    SocialUserAccessor.Instance.Update(suer);

                    result.Error = AppError.ERROR_SUCCESS;
                    result.Data  = SecurityHelper.GetToken(suer.UserId.ToString());
                }
                else
                {
                    result.Error = AppError.ERROR_FAILED;
                }
            }
            catch (Exception e)
            {
                result.Error     = AppError.ERROR_FAILED;
                result.ExMessage = e.ToString();
            }
            return(result);
        }
        public async Task ShouldIgnoreDuplicatedMessage()
        {
            // Arrange
            var fbHookChange = MakeFbHootChangeForComment();
            var fbComment    = MakeFbComment();
            var sender       = new SocialUser {
                Id = 1, OriginalId = "user_1"
            };

            var dependencyResolverMock = MockDependencyResolver(fbHookChange, fbComment, sender);
            var messageServiceMock     = new Mock <IMessageService>();

            // make duplicate message
            messageServiceMock.Setup(t => t.FindAll()).Returns(new List <Message> {
                new Message {
                    OriginalId = fbComment.id
                }
            }.AsQueryable());
            dependencyResolverMock.Setup(t => t.Resolve <IMessageService>()).Returns(messageServiceMock.Object);
            var strategy      = new NewCommentStrategy(dependencyResolverMock.Object);
            var socialAccount = new SocialAccount {
                Token = "token", IfConvertVisitorPostToConversation = true
            };

            // Act
            var processResult = await strategy.Process(socialAccount, fbHookChange);

            // Assert
            Assert.False(processResult.NewMessages.Any());
            Assert.False(processResult.NewConversations.Any());
            Assert.False(processResult.UpdatedConversations.Any());
        }
        public ActionResult CallBack()
        {
            var    verifier = Request.QueryString["code"];
            string state    = Session["requeststate"].ToString();
            WeiboAuthenticationTicket ticket = new WeiboAuthenticationTicket()
            {
                Code = verifier,
                Tag  = "Weibo"
            };

            ticket = _tencentHandler.PreAuthorization(ticket);
            ticket = _tencentHandler.AuthenticateCore(ticket);
            UserClaim userClaim = getUserClaimByOpenIdOrUnionId(ticket.OpenId, "", ticket.Tag);

            if (userClaim != null)
            {
                FormsAuthentication.SetAuthCookie(userClaim.User.UserName, true);
                if (Session["returnUrl"] != null && string.IsNullOrEmpty(Session["returnUrl"].ToString()))
                {
                    return(Redirect(Session["returnUrl"].ToString()));
                }
                return(RedirectToAction("Index", "Home"));
            }
            SocialUser user = _tencentHandler.GetUserInfo(ticket);

            Session["social.current"] = user;
            return(RedirectToAction("social", "members"));
        }
Exemple #10
0
        public async override Task <FacebookProcessResult> Process(SocialAccount socialAccount, FbHookChange change)
        {
            var    result = new FacebookProcessResult(NotificationManager);
            string token  = socialAccount.Token;

            if (IsDuplicatedMessage(change.Value.CommentId))
            {
                return(result);
            }

            FbComment  comment = FbClient.GetComment(socialAccount.Token, change.Value.CommentId);
            SocialUser sender  = await GetOrCreateFacebookUser(socialAccount.Token, comment.from.id);

            var conversation = GetConversation(change.Value.PostId);

            if (conversation == null)
            {
                return(result);
            }

            Message message = FacebookConverter.ConvertToMessage(comment);

            message.SenderId = sender.Id;
            var parent = GetParent(change.Value.PostId, comment);

            if (parent != null)
            {
                message.ParentId   = parent.Id;
                message.ReceiverId = parent.SenderId;
                bool ifParentIsComment = parent.ParentId != null;
                if (ifParentIsComment)
                {
                    message.Source = MessageSource.FacebookPostReplyComment;
                }
            }

            message.ConversationId           = conversation.Id;
            conversation.IfRead              = false;
            conversation.Status              = sender.Id != socialAccount.Id ? ConversationStatus.PendingInternal : ConversationStatus.PendingExternal;
            conversation.LastMessageSenderId = message.SenderId;
            conversation.LastMessageSentTime = message.SendTime;

            if (conversation.TryToMakeWallPostVisible(socialAccount))
            {
                result.WithNewConversation(conversation);
            }

            conversation.Messages.Add(message);

            await UpdateConversation(conversation);

            await CurrentUnitOfWork.SaveChangesAsync();

            if (!conversation.IsHidden)
            {
                result.WithNewMessage(message);
            }

            return(result);
        }
Exemple #11
0
        public Message ConvertMessage(FbMessage fbMessage, SocialUser Sender, SocialUser Receiver)
        {
            Message message = new Message
            {
                SenderId   = Sender.Id,
                ReceiverId = Receiver.Id,
                Source     = MessageSource.FacebookMessage,
                OriginalId = fbMessage.Id,
                SendTime   = fbMessage.SendTime,
                Content    = fbMessage.Content
            };

            foreach (var attachment in fbMessage.Attachments)
            {
                message.Attachments.Add(new MessageAttachment
                {
                    OriginalId = attachment.Id,
                    Name       = attachment.Name,
                    MimeType   = attachment.MimeType,
                    Type       = attachment.Type,
                    Size       = attachment.Size,
                    Url        = attachment.Url,
                    PreviewUrl = attachment.PreviewUrl
                });
            }

            return(message);
        }
        public async Task ShouldCreateMessageForComment()
        {
            // Arrange
            var fbHookChange = MakeFbHootChangeForComment();
            var fbComment    = MakeFbComment();
            var sender       = new SocialUser {
                Id = 1, OriginalId = "user_1"
            };

            var dependencyResolverMock = MockDependencyResolver(fbHookChange, fbComment, sender);
            var strategy = new NewCommentStrategy(dependencyResolverMock.Object);

            strategy.UnitOfWorkManager = MockUnitOfWorkManager().Object;
            var socialAccount = new SocialAccount {
                Token = "token", IfConvertVisitorPostToConversation = true
            };

            // Act
            var processResult = await strategy.Process(socialAccount, fbHookChange);

            // Assert
            var message = processResult.UpdatedConversations.First().Messages.First(t => t.OriginalId == "comment_1");

            Assert.NotNull(message);
            Assert.Equal(MessageSource.FacebookPostComment, message.Source);
            Assert.Equal(fbComment.id, message.OriginalId);
            Assert.Equal(sender.Id, message.SenderId);
            Assert.Equal(fbComment.message, message.Content);
        }
Exemple #13
0
 private void OnLoginGameCenterSuccess(EnumLoginState state, SocialUser user)
 {
     if (state == EnumLoginState.Success)
     {
         buttonFirebase.gameObject.SetActive(true);
     }
 }
        public async Task ShouldNotifyNewMessage()
        {
            // Arrange
            var fbHookChange = MakeFbHootChangeForComment();
            var fbComment    = MakeFbComment();
            var sender       = new SocialUser {
                Id = 1, OriginalId = "user_1"
            };

            var dependencyResolverMock = MockDependencyResolver(fbHookChange, fbComment, sender);
            var strategy = new NewCommentStrategy(dependencyResolverMock.Object);

            strategy.UnitOfWorkManager = MockUnitOfWorkManager().Object;
            var socialAccount = new SocialAccount {
                Token = "token", IfConvertVisitorPostToConversation = true
            };

            // Act
            var processResult = await strategy.Process(socialAccount, fbHookChange);

            // Assert
            Assert.Equal(0, processResult.NewConversations.Count());
            Assert.Equal(1, processResult.UpdatedConversations.Count());
            Assert.Equal(1, processResult.NewMessages.Count());
        }
        public async Task ShouldUpdateConversation()
        {
            // Arrange
            var fbHookChange = MakeFbHootChangeForComment();
            var fbComment    = MakeFbComment();
            var sender       = new SocialUser {
                Id = 1, OriginalId = "user_1"
            };

            var dependencyResolverMock = MockDependencyResolver(fbHookChange, fbComment, sender);
            var strategy = new NewCommentStrategy(dependencyResolverMock.Object);

            strategy.UnitOfWorkManager = MockUnitOfWorkManager().Object;
            var socialAccount = new SocialAccount {
                Token = "token", IfConvertVisitorPostToConversation = true
            };

            // Act
            var processResult = await strategy.Process(socialAccount, fbHookChange);

            // Assert
            var conversation = processResult.UpdatedConversations.First();

            Assert.NotNull(conversation);
            Assert.Equal(sender.Id, conversation.LastMessageSenderId);
            Assert.Equal(fbComment.created_time, conversation.LastMessageSentTime);
            Assert.Equal(ConversationStatus.PendingInternal, conversation.Status);
        }
        public async Task ShouldNofityNewConversation()
        {
            // Arrange
            var fbChange = new FbHookChange {
                Value = new FbHookChangeValue {
                    ThreadId = "original_conversation_id"
                }
            };
            var fbMessage = new FbMessage {
                Id = "fb_1", Content = "Test_Message", SenderId = "user_1", ReceiverId = "user_2", SendTime = DateTime.UtcNow
            };
            var sender = new SocialUser {
                Id = 1, OriginalId = "user_1"
            };
            var receiver = new SocialUser {
                Id = 2, OriginalId = "user_2"
            };
            IDependencyResolver dependencyResolver = MockDependecyResolverForTestingCreateConversation(fbChange, fbMessage, sender, receiver).Object;
            var strategy = new NewMessageStrategy(dependencyResolver);

            strategy.UnitOfWorkManager = MockUnitOfWorkManager().Object;
            var socialAccount = new SocialAccount {
                Token = "token", IfConvertMessageToConversation = true
            };

            // Act
            var processResult = await strategy.Process(socialAccount, fbChange);

            // Assert
            Assert.Equal(1, processResult.NewConversations.Count());
            Assert.Equal(0, processResult.UpdatedConversations.Count());
            Assert.Equal(0, processResult.NewMessages.Count());
        }
Exemple #17
0
        public IActionResult _login(LoginModel model, bool p = false)
        {
            SocialUser user = null;

            if (model.Email != null)
            {
                user = DbContext.SocialUsers.FirstOrDefault(x => x.Email.ToLower() == model.Email.ToLower());

                if (user == null)
                {
                    //Email doesn't exist
                    ModelState.AddModelError("Email", "There is no account for this email.");
                }
                else if (model.Password != null && user.Password != model.Password)
                {
                    //Wrong password
                    ModelState.AddModelError("Password", "Wrong password. It's case-sensitive!");
                }

                if (ModelState.IsValid)
                {
                    //Success
                    return(PartialView("_LoginRedirect", user));
                }
            }

            model.IsPost = true;
            return(PartialView(model));
        }
Exemple #18
0
        public HttpResponseMessage AddSocialUser(SocialUser user)
        {
            List <User> u      = new List <Models.User>();
            var         dbUser = _db.Users.FirstOrDefault(p => p.SocialID == user.Mail);

            if (dbUser != null)
            {
                u.Add(dbUser);
            }
            else
            {
                User _user = new Models.User();
                _user.User_Email      = user.Mail;
                _user.SocialID        = user.Mail;
                _user.User_ImgPath    = user.ImgPath;
                _user.User_Password   = user.Password;
                _user.UserType_ID     = 1;
                _user.User_Name       = user.Name;
                _user.User_SignUpDate = DateTime.Now;
                _db.Users.Add(_user);
                _db.SaveChanges();
                u.Add(_user);
            }
            return(Request.CreateResponse(HttpStatusCode.OK, getUsers(u)));
        }
 public ActionResult CallBack()
 {
     try
     {
         var    verifier = Request.Params["code"];
         string state    = Session["requeststate"].ToString();
         if (!state.Contains(Request.Params["state"].ToString()))
         {
             return(Content("错误,请稍后重试"));
         }
         WechatAuthenticationTicket ticket = new WechatAuthenticationTicket()
         {
             Code = verifier
         };
         ticket = _tencentHandler.PreAuthorization(ticket);
         ticket = _tencentHandler.AuthenticateCore(ticket);
         SocialUser user = _tencentHandler.GetUserInfo(ticket);
         if (null != user)
         {
             return(Content(""));
         }
     }
     catch (SocialExeception ex)
     {
         return(Content(""));
     }
     return(Content(""));
 }
Exemple #20
0
        public override async Task <SocialUser> GetUserInfoAsync(Account account)
        {
            SocialUser user        = null;
            string     token       = account.Properties["access_token"];
            string     refreshToke = account.Properties["refresh_token"];
            int        expriesIn;

            int.TryParse(account.Properties["expires_in"], out expriesIn);

            Dictionary <string, string> dictionary = new Dictionary <string, string> {
                { "Authorization", token }
            };
            var request  = new OAuth2Request("POST", UserInfoUri, dictionary, account);
            var response = await request.GetResponseAsync();

            if (response != null && response.StatusCode == HttpStatusCode.OK)
            {
                string userJson = await response.GetResponseTextAsync();

                var lineUser = JsonConvert.DeserializeObject <LineUser>(userJson);
                user = new SocialUser
                {
                    SocialId     = lineUser.Id,
                    Token        = token,
                    RefreshToken = refreshToke,
                    Name         = lineUser.Name,
                    ExpiresIn    = DateTime.UtcNow.Add(new TimeSpan(expriesIn)),
                    PictureUrl   = lineUser.ProfileImage,
                    Provider     = SocialProvider.Line,
                    LoggedInWithSocialAccount = true,
                };
            }

            return(user);
        }
        public async Task ShouldSetParentForComment()
        {
            // Arrange
            var fbHookChange = MakeFbHootChangeForComment();
            var fbComment    = MakeFbComment();

            fbComment.parent = null;
            var sender = new SocialUser {
                Id = 1, OriginalId = "user_1"
            };

            var dependencyResolverMock = MockDependencyResolver(fbHookChange, fbComment, sender);
            var messageServiceMock     = new Mock <IMessageService>();

            // mock parent data
            messageServiceMock.Setup(t => t.FindByOriginalId(MessageSource.FacebookPost, fbComment.PostId)).Returns(new Message {
                Id = 111, SenderId = 222
            });
            dependencyResolverMock.Setup(t => t.Resolve <IMessageService>()).Returns(messageServiceMock.Object);
            var strategy = new NewCommentStrategy(dependencyResolverMock.Object);

            strategy.UnitOfWorkManager = MockUnitOfWorkManager().Object;
            var socialAccount = new SocialAccount {
                Token = "token", IfConvertVisitorPostToConversation = true
            };

            // Act
            var processResult = await strategy.Process(socialAccount, fbHookChange);

            // Assert
            var message = processResult.UpdatedConversations.First().Messages.First(t => t.OriginalId == "comment_1");

            Assert.Equal(111, message.ParentId);
            Assert.Equal(222, message.ReceiverId);
        }
        public ActionResult FacebookCallback(string code)
        {
            var     fb     = new FacebookClient();
            dynamic result = fb.Post("oauth/access_token", new
            {
                client_id     = "1743513262532791",
                client_secret = "a52e7a8814110c005ed94e3a0a94e32d",
                redirect_uri  = RedirectUri.AbsoluteUri,
                code          = code
            });

            var accessToken = result.access_token;

            fb.AccessToken = accessToken;

            Session["AccessToken"] = accessToken;

            dynamic me        = fb.Get("me?fields=first_name,middle_name,last_name,email,gender,locale,timezone,currency,verified,picture,age_range,id");
            string  email     = me.email;
            string  firstName = me.first_name;
            string  lastName  = me.middle_name + " " + me.last_name;
            string  gender    = me.gender;
            string  picture   = me.picture.data.url;

            var socialUser = db.SocialUsers.Any(c => c.Email == email);

            if (!socialUser)
            {
                SocialUser acc = new SocialUser()
                {
                    Email          = email,
                    FirstName      = firstName,
                    LastName       = lastName,
                    Gender         = gender,
                    Picture        = picture,
                    SocialSiteName = "Facebook"
                };

                db.SocialUsers.Add(acc);
                db.SaveChanges();
            }

            var users = db.SocialUsers.Where(c => c.Email == email);

            foreach (var value in users)
            {
                Session["user"] = new SocialUser()
                {
                    Id        = value.Id,
                    Email     = email,
                    FirstName = firstName,
                    LastName  = lastName
                };
            }
            Session["userType"] = "socialUser";

            FormsAuthentication.SetAuthCookie(email, false);
            return(RedirectToAction("Index", "Home"));
        }
        public ActionResult DeleteConfirmed(int id)
        {
            SocialUser socialUser = db.SocialUsers.Find(id);

            db.SocialUsers.Remove(socialUser);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
Exemple #24
0
        private void BindUserMessage(SocialUser fbpageInboxUserInfo)
        {
            if (!SelectedUsers.Any(m => m.InboxUserName.Equals(fbpageInboxUserInfo.InboxUserName)))
            {
                SelectedUsers.Add(fbpageInboxUserInfo);

                fbpageInboxUserInfo.Messages = _dbHelper.GetMessengerUserComments(fbpageInboxUserInfo.InboxUserId);
            }
        }
Exemple #25
0
    protected void bt_register_Click(object sender, EventArgs e)
    {
        SocialUser social = new SocialUser();

        social.email    = Email.Text;
        social.username = LoginName.Text;
        social.id       = hidden_id.Value;
        InsertNewUser(social);
    }
Exemple #26
0
 private void BindUserMessage(SocialUser fbpageInboxUserInfo)
 {
     if (!SelectedUsers.Any(m => m.InboxUserId.Equals(fbpageInboxUserInfo.InboxUserId)))
     {
         SelectedUsers.Add(fbpageInboxUserInfo);
         //LinkToSend=fbpageInboxUserInfo.InboxNavigationUrl;
         fbpageInboxUserInfo.Messages = _dbHelper.GetMessengerUserComments(fbpageInboxUserInfo.InboxUserId, fbpageInboxUserInfo.PageId);
     }
 }
        public async Task <ActionResult <LoginSuccessUser> > Login([FromBody] SocialUser socialUser)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            return(await _userService.Authenticate(socialUser.IdToken, socialUser.Email));
        }
Exemple #28
0
 private void OnLoginFacebookSuccess(EnumLoginState state, SocialUser user)
 {
     text += $"\nLogin: {state}";
     if (state == EnumLoginState.Success)
     {
         loginFirebase.credentialUser = user;
         text += $"\nInfo: {user.DebugString()}";
         buttonFirebase.gameObject.SetActive(true);
     }
 }
Exemple #29
0
        private async Task Process(FacebookProcessResult result, FbMessage fbMessage, SocialAccount socialAccount, FbHookChange change)
        {
            SocialUser sender = await GetOrCreateFacebookUser(socialAccount.Token, fbMessage.SenderId);

            SocialUser receiver = await GetOrCreateFacebookUser(socialAccount.Token, fbMessage.ReceiverId);

            var existingConversation = GetUnClosedConversation(change.Value.ThreadId);

            if (existingConversation != null)
            {
                Message message = FacebookConverter.ConvertMessage(fbMessage, sender, receiver);
                message.ConversationId = existingConversation.Id;
                bool isNewMessage = fbMessage.SendTime > existingConversation.LastMessageSentTime;

                if (isNewMessage)
                {
                    existingConversation.IfRead = false;
                    existingConversation.Status = sender.Id != socialAccount.SocialUser.Id ? ConversationStatus.PendingInternal : ConversationStatus.PendingExternal;
                    existingConversation.LastMessageSenderId = message.SenderId;
                    existingConversation.LastMessageSentTime = message.SendTime;
                }

                existingConversation.Messages.Add(message);
                await UpdateConversation(existingConversation);

                await CurrentUnitOfWork.SaveChangesAsync();

                result.WithNewMessage(message);
            }
            else
            {
                if (sender.Id == socialAccount.Id)
                {
                    return;
                }

                Message message      = FacebookConverter.ConvertMessage(fbMessage, sender, receiver);
                var     conversation = new Conversation
                {
                    OriginalId          = change.Value.ThreadId,
                    Source              = ConversationSource.FacebookMessage,
                    Priority            = ConversationPriority.Normal,
                    Status              = ConversationStatus.New,
                    Subject             = GetSubject(message.Content),
                    LastMessageSenderId = message.SenderId,
                    LastMessageSentTime = message.SendTime
                };
                conversation.Messages.Add(message);
                await AddConversation(socialAccount, conversation);

                await CurrentUnitOfWork.SaveChangesAsync();

                result.WithNewConversation(conversation);
            }
        }
Exemple #30
0
        private void OnSelectedUserChanged(SocialUser socialUser)
        {
            if (SelectedUsers == null)
            {
                SelectedUsers = new ObservableCollection <SocialUser>();
            }

            if (SelectedUsers.FirstOrDefault(s => s.InboxUserId == socialUser.InboxUserId) == null)
            {
                SelectedUsers.Add(socialUser);
            }
        }
        private List<SocialUser> LoadSocialUsers(SocialUserType type, SocialUserFilter filter)
        {
            List<SocialUser> users = new List<SocialUser>();

            using (ClientContext ctx = TokenHelper.GetClientContextWithContextToken(hdnHostWeb.Value, hdnContextToken.Value, Request.Url.Authority))
            {
                //Get social users
                ClientResult<SocialActor[]> socialActors = null;
                SocialFollowingManager followingManager = new SocialFollowingManager(ctx);
                ctx.Load(followingManager);

                if (type == SocialUserType.Follower)
                    socialActors = followingManager.GetFollowers();
                if (type == SocialUserType.Followed)
                    socialActors = followingManager.GetFollowed(SocialActorTypes.Users);

                ctx.ExecuteQuery();

                //Build a collection of users
                foreach (var socialActor in socialActors.Value)
                {
                    SocialUser user = new SocialUser();
                    user.AccountName = socialActor.AccountName;
                    user.Name = socialActor.Name;
                    user.ImageUrl = socialActor.ImageUri;
                    users.Add(user);
                }
            }

            //Filter the users
            return FilterFollowed(users, filter);
        }
        private List<SocialUser> FilterFollowed(List<SocialUser> users, SocialUserFilter filter)
        {
            List<SocialUser> includedUsers = new List<SocialUser>();

            foreach (SocialUser user in users)
            {
                bool include = false;
                List<SocialPost> posts = GetPosts(user.AccountName);

                switch (filter)
                {
                    case SocialUserFilter.All:
                        include = true;
                        break;

                    case SocialUserFilter.Week:
                        foreach (SocialPost post in posts)
                        {
                            if (post.CreatedDate.AddDays(7) >= DateTime.Today)
                            {
                                include = true;
                                break;
                            }
                        }
                        break;

                    case SocialUserFilter.Liked:
                        foreach (SocialPost post in posts)
                        {
                            if (post.LikedByMe)
                            {
                                include = true;
                                break;
                            }
                        }
                        break;

                }

                if (include)
                {
                    SocialUser includedUser = new SocialUser();
                    includedUser.AccountName = user.AccountName;
                    includedUser.ImageUrl = user.ImageUrl;
                    includedUser.Name = user.Name;
                    includedUsers.Add(user);
                }
            }

            return includedUsers;
        }
        private List<SocialUser> LoadSocialUsers(SocialUserType type, SocialUserFilter filter)
        {
            List<SocialUser> users = new List<SocialUser>();

            //Create the endpoint for the REST call
            string endpoint;
            if (type == SocialUserType.Followed)
                endpoint = hdnHostWeb.Value + "/_api/social.following/my/Followed(types=1)";
            else
                endpoint = hdnHostWeb.Value + "/_api/social.following/my/Followers";

            //Make the request
            XDocument responseDoc = GetDataREST(endpoint);

            //Parse the response
            XNamespace d = "http://schemas.microsoft.com/ado/2007/08/dataservices";
            XNamespace m = "http://schemas.microsoft.com/ado/2007/08/dataservices/metadata";
            XNamespace georss = "http://www.georss.org/georss";
            XNamespace gml = "http://www.opengis.net/gml";

            var followedUsers = from e in responseDoc.Root.Descendants(d + "element")
                                select new
                                {
                                    AccountName = e.Element(d + "AccountName").Value.Split('|')[2],
                                    Name = e.Element(d + "Name").Value,
                                    ImageUrl = e.Element(d + "ImageUri").Value
                                };

            //Build a collection of users
            foreach (var followedUser in followedUsers)
            {
                SocialUser user = new SocialUser();
                user.AccountName = followedUser.AccountName;
                user.Name = followedUser.Name;
                user.ImageUrl = followedUser.ImageUrl;
                users.Add(user);
            }

            //Filter the users
            return FilterFollowed(users, filter);
        }