Esempio n. 1
0
        private Tuple<User, IList<string>> GetOrCreateUser(UserInfo id, string email, string displayName)
        {
            bool emailFromId = !String.IsNullOrEmpty(id.Email);
            email = email ?? id.Email;
            displayName = displayName ?? id.DisplayName;

            IList<string> missingFields = new List<string>();
            User user = Auth.Login(id.Provider, id.Identifier);
            if (user == null)
            {
                // Can we find a user with that email?
                if (!String.IsNullOrEmpty(email))
                {
                    user = Auth.GetUserByEmail(email);
                    if (user != null)
                    {
                        if (!emailFromId)
                        {
                            // We can't just associate them based on the email they typed...
                            return null;
                        }

                        // Associate this credential with the user
                        Auth.AddCredential(user.Id, id.Provider, id.Identifier);
                        return Tuple.Create(user, (IList<string>)null);
                    }
                }
                else
                {
                    // Need an email address
                    missingFields.Add("email");
                }

                if (String.IsNullOrEmpty(displayName))
                {
                    missingFields.Add("displayName");
                }

                if (missingFields.Count > 0)
                {
                    return Tuple.Create((User)null, missingFields);
                }

                // Nothing is missing, so we can just create the user
                user = Auth.Register(id.Provider, id.Identifier, email, displayName);
            }
            return Tuple.Create(user, (IList<string>)null);
        }
 public void AddTokenExchange(string token, UserInfo response)
 {
     TokenExchanges["fb|" + token] = response;
 }