예제 #1
0
        //
        // GET: /OAuth/

        public ActionResult Token()
        {
            try
            {
                var oauthRequest = new TokenRequest(new OAuth2Provider.Request.HttpRequest(Request), MvcApplication.ServiceLocator);

                var token = oauthRequest.Authorize();

                if (token.RedirectsUri.HasValue())
                {
                    var redirectUri = OAuthResponse
                                      .TokenResponse(token.AccessToken, token.ExpiresIn, token.RefreshToken)
                                      .SetLocation(token.RedirectsUri)
                                      .BuildQueryMessage().LocationUri;

                    return(Redirect(redirectUri));
                }

                var response = OAuthResponse
                               .TokenResponse(token.AccessToken, token.ExpiresIn, token.RefreshToken)
                               .BuildJsonMessage();

                return(this.OAuth(response));
            }
            catch (OAuthException ex)
            {
                var response = new ErrorResponseBuilder(ex).BuildJsonMessage();
                return(this.OAuth(response));
            }
        }