Пример #1
0
        /// <summary>
        /// Deletes a request token and its associated secret and stores a new access token and secret.
        /// </summary>
        /// <param name="consumerKey">The Consumer that is exchanging its request token for an access token.</param>
        /// <param name="requestToken">The Consumer's request token that should be deleted/expired.</param>
        /// <param name="accessToken">The new access token that is being issued to the Consumer.</param>
        /// <param name="accessTokenSecret">The secret associated with the newly issued access token.</param>
        /// <remarks>
        ///     <para>
        /// Any scope of granted privileges associated with the request token from the
        /// original call to <see cref="StoreNewRequestToken"/> should be carried over
        /// to the new Access Token.
        /// </para>
        ///     <para>
        /// To associate a user account with the new access token,
        /// <see cref="System.Web.HttpContext.User">HttpContext.Current.User</see> may be
        /// useful in an ASP.NET web application within the implementation of this method.
        /// Alternatively you may store the access token here without associating with a user account,
        /// and wait until <see cref="WebConsumer.ProcessUserAuthorization()"/> or
        /// <see cref="DesktopConsumer.ProcessUserAuthorization(string, string)"/> return the access
        /// token to associate the access token with a user account at that point.
        /// </para>
        /// </remarks>
        public void ExpireRequestTokenAndStoreNewAccessToken(string consumerKey, string requestToken, string accessToken, string accessTokenSecret)
        {
            var requestTokenEntity = Database.DataContext.IssuedTokens.OfType <IssuedRequestToken>()
                                     .Include("User")
                                     .First(t => t.Consumer.ConsumerKey == consumerKey && t.Token == requestToken);

            var accessTokenEntity = new IssuedAccessToken {
                Token             = accessToken,
                TokenSecret       = accessTokenSecret,
                ExpirationDateUtc = null,                 // currently, our access tokens don't expire
                User     = requestTokenEntity.User,
                Scope    = requestTokenEntity.Scope,
                Consumer = requestTokenEntity.Consumer,
            };

            Database.DataContext.DeleteObject(requestTokenEntity);
            Database.DataContext.AddToIssuedTokens(accessTokenEntity);
            Database.DataContext.SaveChanges();
        }
        /// <summary>
        /// Deletes a request token and its associated secret and stores a new access token and secret.
        /// </summary>
        /// <param name="consumerKey">The Consumer that is exchanging its request token for an access token.</param>
        /// <param name="requestToken">The Consumer's request token that should be deleted/expired.</param>
        /// <param name="accessToken">The new access token that is being issued to the Consumer.</param>
        /// <param name="accessTokenSecret">The secret associated with the newly issued access token.</param>
        /// <remarks>
        /// 	<para>
        /// Any scope of granted privileges associated with the request token from the
        /// original call to <see cref="StoreNewRequestToken"/> should be carried over
        /// to the new Access Token.
        /// </para>
        /// 	<para>
        /// To associate a user account with the new access token,
        /// <see cref="System.Web.HttpContext.User">HttpContext.Current.User</see> may be
        /// useful in an ASP.NET web application within the implementation of this method.
        /// Alternatively you may store the access token here without associating with a user account,
        /// and wait until <see cref="WebConsumer.ProcessUserAuthorization()"/> or
        /// <see cref="DesktopConsumer.ProcessUserAuthorization(string, string)"/> return the access
        /// token to associate the access token with a user account at that point.
        /// </para>
        /// </remarks>
        public void ExpireRequestTokenAndStoreNewAccessToken(string consumerKey, string requestToken, string accessToken, string accessTokenSecret)
        {
            var requestTokenEntity = Database.DataContext.IssuedTokens.OfType<IssuedRequestToken>()
                .Include("User")
                .First(t => t.Consumer.ConsumerKey == consumerKey && t.Token == requestToken);

            var accessTokenEntity = new IssuedAccessToken
            {
                Token = accessToken,
                TokenSecret = accessTokenSecret,
                ExpirationDateUtc = null, // currently, our access tokens don't expire
                User = requestTokenEntity.User,
                Scope = requestTokenEntity.Scope,
                Consumer = requestTokenEntity.Consumer,
            };

            Database.DataContext.DeleteObject(requestTokenEntity);
            Database.DataContext.AddToIssuedTokens(accessTokenEntity);
            Database.DataContext.SaveChanges();
        }