예제 #1
0
        private UserInfo GetUserData(string token)
        {
            var parameters = new NameValueCollection {
                { "oauth_consumer_key", _appId },
                { "oauth_nonce", SignatureGenerator.GenerateNonce() },
                { "oauth_signature_method", SignatureMethod },
                { "oauth_timestamp", SignatureGenerator.GetTimestamp() },
                { "oauth_token", token },
                { "oauth_version", "1.0" },
            };
            var parametersString = OAuthHelpers.ConstructQueryString(parameters);

            var signature = _signatureGenerator.GenerateSignature("GET", TumblrApi + "v2/user/info", parametersString);

            parameters.Set("oauth_signature", signature);

            var auth = "OAuth" + OAuthHelpers.ConstructQueryString(parameters, ",");

            var userInfoUrl = OAuthHelpers.BuildUri(TumblrApi, "v2/user/info", parameters);
            var response    = OAuthHelpers.AuthorizationLoad(userInfoUrl, auth);

            dynamic obj = JObject.Parse(response);

            return(new UserInfo {
                Id = obj.response.user.blogs[0].url,
                UserName = obj.response.user.name
            });
        }
예제 #2
0
 private static string CreateUserDataUri(string accessToken)
 {
     return(OAuthHelpers.BuildUri(ApiUrl, "v1/people/~", new NameValueCollection {
         { "oauth2_access_token", accessToken },
         { "format", "json" }
     }));
 }
예제 #3
0
        public AuthenticationResult VerifyAuthentication(HttpContextBase context)
        {
            var accessToken = GetAccessToken(context);
            var userData    = GetUserData(accessToken);

            return(OAuthHelpers.CreateAuthenticationResult(ProviderName, userData));
        }
예제 #4
0
 public static string CreateRedirectionUri(string url, string path, string appId, Uri returnUrl)
 {
     return(OAuthHelpers.BuildUri(url, path, new NameValueCollection {
         { "client_id", appId },
         { "redirect_uri", HttpUtility.UrlEncode(returnUrl.AbsoluteUri) },
         { "response_type", "code" },
     }));
 }
        public AuthenticationResult VerifyAuthentication(HttpContextBase context)
        {
            var url      = CreateUserInfoUrl(context);
            var request  = OAuthHelpers.Load(url);
            var userData = CreateUserInfo(request);

            return(OAuthHelpers.CreateAuthenticationResult(ProviderName, userData));
        }
예제 #6
0
        public AuthenticationResult VerifyAuthentication(HttpContextBase context)
        {
            var authorizationCode = context.Request["code"];
            var accessToken       = GetAccessToken(authorizationCode, context.Request.Url);
            var userData          = GetUserData(accessToken);

            return(OAuthHelpers.CreateAuthenticationResult(ProviderName, userData));
        }
예제 #7
0
        private static string CreateUserInfoUri(string userId)
        {
            var param = new NameValueCollection {
                { "uids", userId }
            };

            return(OAuthHelpers.BuildUri(ApiUrl, OAuthGetUsersPath, param));
        }
예제 #8
0
        private static string CreateRedirectUrl(string requestToken)
        {
            var parameters = new NameValueCollection {
                { "oauth_token", requestToken }
            };

            return(OAuthHelpers.BuildUri(OAuthUrl, OAuthAuthenticatePath, parameters));
        }
예제 #9
0
 private string CreateAccessTokenUrl(string authorizationCode, Uri returnUrl)
 {
     return(OAuthHelpers.BuildUri(ApiUrl, "oauth/access_token", new NameValueCollection {
         { "client_id", AppId },
         { "client_secret", _appSecret },
         { "redirect_uri", HttpUtility.UrlEncode(returnUrl.AbsoluteUri) },
         { "code", authorizationCode },
     }));
 }
예제 #10
0
        private static UserInfo GetUserData(string accessToken)
        {
            var uri      = CreateUserInfoUri(accessToken);
            var response = OAuthHelpers.GetObjectFromAddress(uri);

            return(new UserInfo {
                Id = response.id,
                UserName = String.Format("{0} {1}", response.first_name, response.last_name)
            });
        }
예제 #11
0
        public AuthenticationResult VerifyAuthentication(HttpContextBase context)
        {
            var url      = CreateAccessTokenUrl(context);
            var response = OAuthHelpers.Load(url);

            RegenerateSignatureKey(response);
            var userInfo = GetUserData(OAuthHelpers.GetValueFromRequest(response, "oauth_token"));

            return(OAuthHelpers.CreateAuthenticationResult(ProviderName, userInfo));
        }
예제 #12
0
 private string CreateAccessTokenUri(HttpContextBase context)
 {
     return(OAuthHelpers.BuildUri(OAuthUrl, OAuthAccessTokenPath, new NameValueCollection {
         { "grant_type", "authorization_code" },
         { "code", context.Request["code"] },
         { "redirect_uri", _redirectUri },
         { "client_id", _appKey },
         { "client_secret", _appSecret }
     }));
 }
예제 #13
0
 private string CreateRedirectUri(Uri returnUrl)
 {
     return(OAuthHelpers.BuildUri(OAuthUrl, "o/oauth2/auth", new NameValueCollection
     {
         { "client_id", _appId },
         { "redirect_uri", returnUrl.GetLeftPart(UriPartial.Path) },
         { "response_type", "code" },
         { "scope", "profile" },
         { "state", HttpUtility.UrlEncode(returnUrl.Query) }
     }));
 }
예제 #14
0
        private string CreateBuildUri(string code)
        {
            var param = new NameValueCollection {
                { "client_id", _appId },
                { "client_secret", _appSecret },
                { "code", code },
                { "redirect_uri", _redirectUri }
            };

            return(OAuthHelpers.BuildUri(OAuthUrl, OAuthTokenPath, param));
        }
예제 #15
0
        private string CreateRedirectionUri()
        {
            var param = new NameValueCollection {
                { "response_type", "code" },
                { "client_id", _appKey },
                { "state", Guid.NewGuid().ToString("N") },
                { "redirect_uri", _redirectUri }
            };

            return(OAuthHelpers.BuildUri(OAuthUrl, OAuthAuthorizationPath, param));
        }
예제 #16
0
        private static UserInfo GetUserData(string userId)
        {
            var address  = CreateUserInfoUri(userId);
            var response = OAuthHelpers.GetObjectFromAddress(address);
            var user     = response.response[0];

            return(new UserInfo {
                Id = user.uid,
                UserName = String.Format("{0} {1}", user.first_name, user.last_name)
            });
        }
예제 #17
0
        private static UserInfo GetUserData(string accessToken)
        {
            var address  = CreateUserDataUri(accessToken);
            var response = OAuthHelpers.GetObjectFromAddress(address);
            var url      = new Uri(response.siteStandardProfileRequest.url.ToString());
            var id       = HttpUtility.ParseQueryString(url.Query).Get("id");

            return(new UserInfo {
                Id = id,
                UserName = String.Format("{0} {1}", response.firstName, response.lastName)
            });
        }
예제 #18
0
        private string GetAccessToken(string authorizationCode, Uri returnUrl)
        {
            var param = new NameValueCollection {
                { "client_id", _appId },
                { "client_secret", _appSecret },
                { "code", authorizationCode },
                { "grant_type", "authorization_code" },
                { "redirect_uri", returnUrl.GetLeftPart(UriPartial.Path) },
            };
            var url = OAuthHelpers.BuildUri(OAuthUrl, "o/oauth2/token", new NameValueCollection());

            return(OAuthHelpers.GetObjectWithPost(url, param).access_token);
        }
예제 #19
0
        private static UserInfo GetUserData(string accessToken)
        {
            var uri = OAuthHelpers.BuildUri(ApiUrl, "oauth2/v1/userinfo", new NameValueCollection {
                { "access_token", accessToken }
            });

            var response = OAuthHelpers.GetObjectFromAddress(uri);

            return(new UserInfo {
                Id = response.id,
                UserName = response.name
            });
        }
예제 #20
0
        public void RequestAuthentication(HttpContextBase context, Uri returnUrl)
        {
            var requestTokenUrl = CreateRequestTokenUrl(returnUrl);
            var response        = OAuthHelpers.Load(requestTokenUrl);

            RegenerateSignatureKey(response);

            var url = OAuthHelpers.BuildUri(TumblrUrl, "oauth/authorize", new NameValueCollection {
                { "oauth_token", OAuthHelpers.GetValueFromRequest(response, "oauth_token") }
            });

            context.Response.Redirect(url, false);
        }
        public void RequestAuthentication(HttpContextBase context, Uri returnUrl)
        {
            var requestTokenUrl = CreateRequestTokenUrl(returnUrl);
            var response        = OAuthHelpers.Load(requestTokenUrl);

            RegenerateSignatureKey(response);

            var url = OAuthHelpers.BuildUri(FlickrUrl, "services/oauth/authorize", new NameValueCollection {
                { "oauth_token", HttpUtility.ParseQueryString(response).Get("oauth_token") }
            });

            context.Response.Redirect(url, false);
        }
예제 #22
0
        public AuthenticationResult VerifyAuthentication(HttpContextBase context)
        {
            var url             = CreateUserInfoUrl(context);
            var response        = OAuthHelpers.Load(url);
            var queryCollection = HttpUtility.ParseQueryString(response);

            var userInfo = new UserInfo {
                Id       = queryCollection.Get("user_id"),
                UserName = queryCollection.Get("screen_name")
            };

            return(OAuthHelpers.CreateAuthenticationResult(ProviderName, userInfo));
        }
예제 #23
0
        public void RequestAuthentication(HttpContextBase context, Uri returnUrl)
        {
            _redirectUri = returnUrl.AbsoluteUri;

            var url          = CreateRequestTokenUrl();
            var request      = OAuthHelpers.Load(url);
            var requestToken = OAuthHelpers.GetValueFromRequest(request, "oauth_token");

            _tokenSecret        = OAuthHelpers.GetValueFromRequest(request, "oauth_token_secret");
            _signatureGenerator = new SignatureGenerator(_appSecret, _tokenSecret);

            var redirectUrl = CreateRedirectUrl(requestToken);

            context.Response.Redirect(redirectUrl, false);
        }
예제 #24
0
        private string CreateRequestTokenUrl()
        {
            var parameters = new NameValueCollection {
                { "oauth_callback", SignatureGenerator.Encode(_redirectUri) },
                { "oauth_consumer_key", _appId },
                { "oauth_nonce", SignatureGenerator.GenerateNonce() },
                { "oauth_signature_method", SignatureMethod },
                { "oauth_timestamp", SignatureGenerator.GetTimestamp() },
                { "oauth_version", OAuthValue }
            };

            var parametersString = OAuthHelpers.ConstructQueryString(parameters);
            var signature        = _signatureGenerator.GenerateSignature("GET", OAuthUrl + OAuthRequestTokenPath, parametersString, true);

            parameters.Set("oauth_signature", signature);

            return(OAuthHelpers.BuildUri(OAuthUrl, OAuthRequestTokenPath, parameters));
        }
        private UserInfo GetAccessInfo(string code)
        {
            var param = new NameValueCollection {
                { "client_id", _clientId },
                { "client_secret", _clientSecret },
                { "code", code },
                { "grant_type", "authorization_code" },
                { "redirect_uri", _redirectUri }
            };

            var url      = OAuthHelpers.BuildUri(OAuthUrl, OauthAccessTokenPath, new NameValueCollection());
            var response = OAuthHelpers.GetObjectWithPost(url, param);

            return(new UserInfo {
                Id = response.user.id,
                UserName = response.user.full_name
            });
        }
예제 #26
0
        private string CreateRequestTokenUrl(Uri returnUrl)
        {
            var parameters = new NameValueCollection {
                { "oauth_callback", SignatureGenerator.Encode(returnUrl.AbsoluteUri) },
                { "oauth_consumer_key", _appId },
                { "oauth_nonce", SignatureGenerator.GenerateNonce() },
                { "oauth_signature_method", SignatureMethod },
                { "oauth_timestamp", SignatureGenerator.GetTimestamp() },
                { "oauth_version", "1.0" },
            };
            var parametersString = OAuthHelpers.ConstructQueryString(parameters);

            var signature = _signatureGenerator.GenerateSignature("GET", TumblrUrl + "oauth/request_token", parametersString, true);

            parameters.Set("oauth_signature", signature);

            return(OAuthHelpers.BuildUri(TumblrUrl, "oauth/request_token", parameters));
        }
예제 #27
0
        private string CreateAccessTokenUrl(HttpContextBase context)
        {
            var parameters = new NameValueCollection {
                { "oauth_consumer_key", _appId },
                { "oauth_nonce", SignatureGenerator.GenerateNonce() },
                { "oauth_signature_method", "HMAC-SHA1" },
                { "oauth_timestamp", SignatureGenerator.GetTimestamp() },
                { "oauth_token", context.Request["oauth_token"] },
                { "oauth_verifier", context.Request["oauth_verifier"] },
                { "oauth_version", "1.0" },
            };
            var parametersString = OAuthHelpers.ConstructQueryString(parameters);

            var signature = _signatureGenerator.GenerateSignature("GET", TumblrUrl + "oauth/access_token", parametersString);

            parameters.Set("oauth_signature", signature);

            return(OAuthHelpers.BuildUri(TumblrUrl, "oauth/access_token", parameters));
        }
예제 #28
0
        private string CreateUserInfoUrl(HttpContextBase context)
        {
            var parameters = new NameValueCollection {
                { "oauth_consumer_key", _appId },
                { "oauth_nonce", SignatureGenerator.GenerateNonce() },
                { "oauth_signature_method", SignatureMethod },
                { "oauth_timestamp", SignatureGenerator.GetTimestamp() },
                { "oauth_token", context.Request.QueryString["oauth_token"] },
                { "oauth_verifier", context.Request.QueryString["oauth_verifier"] },
                { "oauth_version", OAuthValue }
            };

            var parametersString = OAuthHelpers.ConstructQueryString(parameters);
            var signature        = _signatureGenerator.GenerateSignature("GET", OAuthUrl + OAuthAccessTokenPath, parametersString);

            parameters.Set("oauth_signature", signature);

            return(OAuthHelpers.BuildUri(OAuthUrl, OAuthAccessTokenPath, parameters));
        }
예제 #29
0
        private string GetAccessToken(HttpContextBase context)
        {
            var address = CreateAccessTokenUri(context);

            return(OAuthHelpers.GetObjectFromAddress(address).access_token);
        }
        public AuthenticationResult VerifyAuthentication(HttpContextBase context)
        {
            var accessInfo = GetAccessInfo(context.Request["code"]);

            return(OAuthHelpers.CreateAuthenticationResult(ProviderName, accessInfo));
        }