Example #1
0
        /// <summary>
        /// Requests an access token using a partially .initialized request message.
        /// </summary>
        /// <param name="request">The request message.</param>
        /// <param name="scopes">The scopes requested by the client.</param>
        /// <returns>The result of the request.</returns>
        private IAuthorizationState RequestAccessToken(ScopedAccessTokenRequest request, IEnumerable <string> scopes = null)
        {
            var authorizationState = new AuthorizationState(scopes);

            request.ClientIdentifier = this.ClientIdentifier;
            this.ApplyClientCredential(request);
            request.Scope.UnionWith(authorizationState.Scope);

            var response = this.Channel.Request(request);
            var success  = response as AccessTokenSuccessResponse;
            var failure  = response as AccessTokenFailedResponse;

            ErrorUtilities.VerifyProtocol(success != null || failure != null, MessagingStrings.UnexpectedMessageReceivedOfMany);
            if (success != null)
            {
                UpdateAuthorizationWithResponse(authorizationState, success);
            }
            else
            {
                // failure
                authorizationState.Delete();
            }

            return(authorizationState);
        }