/// <summary>
        /// <see cref="OAuthAuthenticator.GetOAuthUserCredentials"/>
        /// </summary>
        protected override OAuthUserCredentials GetOAuthUserCredentials(string response)
        {
            OAuthUserCredentials result = base.GetOAuthUserCredentials(response);
            string userName             = GetUserNameFromToken(response);

            if (userName.IsNotNullOrEmpty())
            {
                result.UserLogin = userName;
            }
            return(result);
        }
Beispiel #2
0
        /// <summary>
        /// <see cref="OAuthAuthenticator.ValidateCredentials"/>
        /// </summary>
        protected override bool ValidateCredentials(OAuthUserCredentials credentials)
        {
            Guid ownerId            = GetMailboxOwner(credentials);
            bool currentUserMailbox = ownerId.Equals(UserConnection.CurrentUser.Id);

            if (currentUserMailbox)
            {
                SetExistingMailboxId(credentials);
            }
            return(!currentUserMailbox);
        }
Beispiel #3
0
        /// <summary>
        /// <see cref="OAuthAuthenticator.SaveCredentials"/>
        /// </summary>
        /// <remarks>Throws <see cref="InvalidObjectStateException"/> when <paramref name="credentials"/> contains
        /// existing mailbox credentials.</remarks>
        protected override void SaveCredentials(OAuthUserCredentials credentials)
        {
            Guid ownerId = GetMailboxOwner(credentials);

            if (ownerId.IsNotEmpty() && !ownerId.Equals(UserConnection.CurrentUser.Id))
            {
                throw new InvalidObjectStateException(string.Format("Mailbox {0} already exists!",
                                                                    credentials.UserLogin));
            }
            base.SaveCredentials(credentials);
        }
Beispiel #4
0
        /// <summary>
        /// Sets existing user mailbox identifier to <see cref="_mailboxSyncSettingsId"/> field.
        /// When field already set, value would not be changed.
        /// </summary>
        /// <param name="credentials"><see cref="OAuthUserCredentials"/> instance.</param>
        protected virtual void SetExistingMailboxId(OAuthUserCredentials credentials)
        {
            if (_mailboxSyncSettingsId.IsNotEmpty())
            {
                return;
            }
            var existingMailboxSelect = GetCheckMailboxSelectBody("Id")
                                        .Where("SenderEmailAddress").IsEqual(Column.Parameter(credentials.UserLogin))
                                        .And("SysAdminUnitId").IsEqual(Column.Parameter(UserConnection.CurrentUser.Id)) as Select;

            _mailboxSyncSettingsId = existingMailboxSelect.ExecuteScalar <Guid>();
        }
Beispiel #5
0
        /// <summary>
        /// Checks that mailbox already exists in bpm'online.
        /// <see cref="MailboxSyncSettings.SenderEmailAddress"/> used for validation.
        /// </summary>
        /// <param name="credentials"><see cref="OAuthUserCredentials"/> instance.</param>
        /// <returns> <see cref="MailboxSyncSettings.SysAdminUnitId"/> column value when mailbax exists,
        /// <c>Guid.Empty</c> otherwise.</returns>
        protected virtual Guid GetMailboxOwner(OAuthUserCredentials credentials)
        {
            if (_mailboxOwnerId.IsNotEmpty())
            {
                return(_mailboxOwnerId);
            }
            var existingMailboxSelect = GetCheckMailboxSelectBody("SysAdminUnitId")
                                        .Where("SenderEmailAddress").IsEqual(Column.Parameter(credentials.UserLogin)) as Select;

            _mailboxOwnerId = existingMailboxSelect.ExecuteScalar <Guid>();
            return(_mailboxOwnerId);
        }
Beispiel #6
0
 /// <summary>
 /// Saves recived from shared application OAuth tokes and user settings.
 /// </summary>
 public virtual void SharedAppAuthCallback()
 {
     Initialize();
     try {
         OAuthUserCredentials credentials = GetCredentials();
         SaveCredentials(credentials);
         JObject result = GetSuccessResultObject(credentials);
         AppendCookieToResponse(true, result);
     } catch (Exception ex) {
         AppendError(ex);
     }
     RedirectToBpm(FinalStageRedirectUrl);
 }
Beispiel #7
0
        /// <summary>
        /// <see cref="OAuthAuthenticator.GetSuccessResultObject"/>
        /// </summary>
        protected override JObject GetSuccessResultObject(OAuthUserCredentials credentials)
        {
            var mailServerId = new Guid((string)State["MailServerId"]);

            return(new JObject {
                { "SenderEmailAddress", credentials.UserLogin },
                { "MailBoxServerId", mailServerId },
                { "MailboxSyncSettingsId", _mailboxSyncSettingsId.ToString() },
                { "MailboxSyncInterval", GetSyncInterval() },
                { "AutomaticallyAddNewEmails", true },
                { "AllowEmailDownloading", GetAllowEmailDownloading(mailServerId) }
            });
        }
Beispiel #8
0
        public static void Main()
        {
            // Wait for DHCP
            while (IPAddress.GetDefaultLocalAddress() == IPAddress.Any)
            {
                Thread.Sleep(50);
            }

            // Update the current time (since Twitter OAuth API requests require a valid timestamp)
            DateTime utcTime = Sntp.GetCurrentUtcTime();

            Microsoft.SPOT.Hardware.Utility.SetLocalTime(utcTime);

            // Set up application and user credentials
            // Visit https://apps.twitter.com/ to create a new Twitter application and get API keys/user access tokens
            var appCredentials = new OAuthApplicationCredentials()
            {
                ConsumerKey    = "YOUR_CONSUMER_KEY_HERE",
                ConsumerSecret = "YOUR_CONSUMER_SECRET_HERE",
            };
            var userCredentials = new OAuthUserCredentials()
            {
                AccessToken       = "YOUR_ACCESS_TOKEN",
                AccessTokenSecret = "YOUR_ACCESS_TOKEN_SECRET",
            };

            // Create new Twitter client with these credentials
            var twitter = new TwitterClient(appCredentials, userCredentials);

            // Verify the credentials and get the current user's account info
            try
            {
                var currentUser = twitter.GetCurrentUser();
                Debug.Print("Authenticated user account: @" + currentUser.ScreenName);
            }
            catch (Exception e)
            {
                Debug.Print("Could not verify account credentials.");
                Debug.Print(e.ToString());
            }

            // Send a tweet
            try
            {
                var tweet = twitter.SendTweet("Trying out MicroTweet! #netmf");
                Debug.Print("Posted a new tweet with ID: " + tweet.ID);
            }
            catch (Exception e)
            {
                Debug.Print("Could not send tweet.");
                Debug.Print(e.ToString());
            }

            // Get recent tweets from the home timeline
            try
            {
                var tweets = twitter.GetHomeTimeline(5);
                Debug.Print("Recent tweets from your timeline:");
                foreach (Tweet tweet in tweets)
                {
                    Debug.Print("  Tweet from @" + tweet.User.ScreenName + ": \"" + tweet.Text + "\"");
                }
            }
            catch (Exception e)
            {
                Debug.Print("Could not retrieve timeline.");
                Debug.Print(e.ToString());
            }

            // Get recent tweets from a specific user
            try
            {
                var tweets = twitter.GetUserTimeline("twitter");
                Debug.Print("Recent tweets from @twitter's timeline:");
                foreach (Tweet tweet in tweets)
                {
                    Debug.Print("  Tweet from @" + tweet.User.ScreenName + ": \"" + tweet.Text + "\"");
                }
            }
            catch (Exception e)
            {
                Debug.Print("Could not retrieve timeline.");
                Debug.Print(e.ToString());
            }
        }
Beispiel #9
0
 /// <summary>
 /// Returns user email from google, using <see cref="GoogleConsumer.GetUserEmail"/> method.
 /// </summary>
 /// <param name="credentials">User oauth credentials.</param>
 /// <returns>User email from google</returns>
 protected virtual string GetUserEmailFromGoogle(OAuthUserCredentials credentials)
 {
     return(GoogleConsumer.GetUserEmail(credentials.AccessToken));
 }
Beispiel #10
0
 /// <summary>
 /// <see cref="OAuthAuthenticator.SaveCredentials"/>
 /// </summary>
 protected override void SaveCredentials(OAuthUserCredentials credentials)
 {
     credentials.UserLogin = GetUserEmailFromGoogle(credentials);
     base.SaveCredentials(credentials);
 }