public string DeleteAccountAlert(string AlertId) { string response; try { response = session.Request(accessToken).Delete().ForUrl(String.Format(accountAlertDetailsLink, AlertId)).ToString(); } catch { accessToken = renewAccessToken(authRepository, session); response = session.Request(accessToken).Delete().ForUrl(String.Format(accountAlertDetailsLink, AlertId)).ToString(); } // return session.Request(accessToken).Delete().ForUrl(String.Format("https://etws.etrade.com/accounts/rest/alerts/{0}", AlertId)).ToString(); return(response); }
public string GetResponse(OAuthSession session, string url) { try { string response; try { response = session.Request(accessToken).Get().ForUrl(url).ToString(); } catch (Exception E) { accessToken = renewAccessToken(authRepository, session); response = session.Request(accessToken).Get().ForUrl(url).ToString(); } return(response); } catch { return(null); } }
private T Get <T>(object queryData = null) where T : IResource, new() { var resourceType = typeof(T); string url = GetUrl <T>(queryData); var serializer = new XmlSerializer(resourceType); ObeyRequestRateLimits(resourceType); try { using (var response = _session.Request(_accessToken).Get().ForUrl(url).ToWebResponse()) using (var responseStream = response.GetResponseStream()) using (var responseMemoryStream = new MemoryStream()) { responseStream.CopyTo(responseMemoryStream); responseMemoryStream.Position = 0; try { return((T)serializer.Deserialize(responseMemoryStream)); } catch (InvalidOperationException ex) { responseStream.Position = 0; using (var streamReader = new StreamReader(responseMemoryStream)) { throw new DeserializeException( ex.Message, streamReader.ReadToEnd(), ex ); } } } } catch (OAuthException ex) { if (ex.InnerException != null && ex.InnerException.Message.Contains("401")) { throw new AuthenticationException(ex.Message, ex); } throw; } }
/// <summary> /// Used to Check if the API key is valid or not. /// </summary> /// <param name="consumerkey"></param> /// <param name="consumersecret"></param> /// <returns></returns> public static Boolean vulndbCheckCredentials(String consumerkey, String consumersecret) { if (consumerkey == "" || consumersecret == "") { return(false); } try { var requestEndPoint = new Uri("https://vulndb.cyberriskanalytics.com/oauth/request_token"); var authorizeEndPoint = new Uri("https://vulndb.cyberriskanalytics.com/oauth/authorize"); var accessEndPoint = new Uri("https://vulndb.cyberriskanalytics.com/oauth/access_token"); var ctx = new OAuthConsumerContext { ConsumerKey = consumerkey, ConsumerSecret = consumersecret, SignatureMethod = SignatureMethod.HmacSha1 }; var genericSession = new OAuthSession(ctx, requestEndPoint, authorizeEndPoint, accessEndPoint); var targetServiceUri = new Uri("https://vulndb.cyberriskanalytics.com/api/v1/vulnerabilities/"); var respText = genericSession.Request().Get().ForUri(targetServiceUri).ToString(); return(true); } catch (WebException ex) { using (var stream = ex.Response.GetResponseStream()) using (var reader = new StreamReader(stream)) { Console.WriteLine(reader.ReadToEnd()); return(false); } } }
static string GetDevDefinedOAuthHeader(HttpWebRequest webRequest, string consumerKey, string consumerSecret, string accessToken, string accessTokenSecret) { OAuthConsumerContext consumerContext = new OAuthConsumerContext { ConsumerKey = consumerKey, ConsumerSecret = consumerSecret, SignatureMethod = SignatureMethod.HmacSha1, UseHeaderForOAuthParameters = true }; consumerContext.UseHeaderForOAuthParameters = true; OAuthSession oSession = new OAuthSession(consumerContext, GET_REQUEST_TOKEN, AuthorizeUrl, GET_ACCESS_TOKEN); oSession.AccessToken = new TokenBase { Token = accessToken, ConsumerKey = consumerKey, TokenSecret = accessTokenSecret }; IConsumerRequest consumerRequest = oSession.Request(); consumerRequest = ConsumerRequestExtensions.ForMethod(consumerRequest, webRequest.Method); consumerRequest = ConsumerRequestExtensions.ForUri(consumerRequest, webRequest.RequestUri); consumerRequest = consumerRequest.SignWithToken(); return(consumerRequest.Context.GenerateOAuthParametersForHeader()); }
static string GetDevDefinedOAuthHeader(HttpWebRequest webRequest, string consumerKey, string consumerSecret, string accessToken, string accessTokenSecret) { OAuthConsumerContext consumerContext = new OAuthConsumerContext { ConsumerKey = consumerKey, ConsumerSecret = consumerSecret, SignatureMethod = SignatureMethod.HmacSha1, UseHeaderForOAuthParameters = true }; consumerContext.UseHeaderForOAuthParameters = true; //URIs not used - we already have Oauth tokens OAuthSession oSession = new OAuthSession(consumerContext, "https://www.example.com", "https://www.example.com", "https://www.example.com"); oSession.AccessToken = new TokenBase { Token = accessToken, ConsumerKey = consumerKey, TokenSecret = accessTokenSecret }; IConsumerRequest consumerRequest = oSession.Request(); consumerRequest = ConsumerRequestExtensions.ForMethod(consumerRequest, webRequest.Method); consumerRequest = ConsumerRequestExtensions.ForUri(consumerRequest, webRequest.RequestUri); consumerRequest = consumerRequest.SignWithToken(); return(consumerRequest.Context.GenerateOAuthParametersForHeader()); }
// unauthenticated connection method: /// <summary> /// Creates a connection with no authorization headers - used for requests that don't require authentication. /// This method does not actually perform the request - it returns the object to make the request with. /// </summary> /// <param name="query">The url to connect to.</param> /// <returns>IConsumerRequest.</returns> public IConsumerRequest UnauthenticatedConnection(string query) { var url = BaseUrl + query; if (AccessToken != null) { return(AuthenticatedQuery(query)); } var consumerContext = new OAuthConsumerContext { ConsumerKey = " ", ConsumerSecret = " ", SignatureMethod = DevDefined.OAuth.Framework.SignatureMethod.PlainText, UseHeaderForOAuthParameters = false }; var consumerSession = new OAuthSession(consumerContext, RequestTokenUrl, AuthorizeUrl, AccessUrl); var getRequest = consumerSession .Request() .ForMethod(Constants.GET) .ForUri(new Uri(url)); return(getRequest); }
/// <summary> /// <para>Performs the query specified in the "query" string to perform a request that requires authorization. /// </para><para>This method requires that either an accessToken has been set manually or /// that the GetVerificationCode() and AuthenticateWithVerificationCode(string code) methods have been called previously. /// </para><para>It returns the IConsumerRequest fully enabled to make the request specified in the "query" string.</para> /// </summary> /// <param name="query">The query string that will be added to the url and used to connect to the API with.</param> /// <returns>IConsumerRequest.</returns> public IConsumerRequest AuthenticatedQuery(string query) { var url = BaseUrl + query; if (AccessToken == null) { throw new AccessTokenIsNullException(); } var consumerContext = new OAuthConsumerContext { ConsumerKey = ConsumerKey, ConsumerSecret = ConsumerSecret, SignatureMethod = SignatureMethod.HmacSha1, UseHeaderForOAuthParameters = true }; var consumerSession = new OAuthSession(consumerContext, RequestTokenUrl + ScopeOfRequest, AuthorizeUrl, AccessUrl) { AccessToken = AccessToken }; var getRequest = consumerSession .Request() .ForMethod(Constants.GET) .ForUri(new Uri(url)) .SignWithToken(AccessToken); return(getRequest); }
private async Task FillCampaigns(OAuthSession newSession) { HttpWebRequest request = newSession.Request().Get().ForUrl("https://api.obsidianportal.com/v1/users/me.json").ToWebRequest(); JObject meObject; using ( WebResponse response = await Task.Factory.FromAsync( request.BeginGetResponse, request.EndGetResponse, null)) using (var streamReader = new StreamReader(response.GetResponseStream())) using (var jsonReader = new JsonTextReader(streamReader)) meObject = JObject.Load(jsonReader); var campaigns = (JArray)meObject["campaigns"]; _settings.UserName = (string)meObject["username"]; UserName = _settings.UserName; _settings.Save(); AllCampaigns = new ObservableCollection <CampaignInfo>( campaigns.Select( c => new CampaignInfo { Name = (string)c["name"], Id = (string)c["id"] })); CurrentCampaign = AllCampaigns.FirstOrDefault(c => c.Id == _settings.LastCampaignId); }
private async void LoadCharacter(CharacterInfo character) { if (character == null) { return; } if (character.Id == null) { TargetCharacter = new CharacterSummary { Name = "<New Character>" }; return; } OAuthSession newSession = CreateOAuthSession(); HttpWebRequest request = newSession.Request() .ForUrl( $"https://api.obsidianportal.com/v1/campaigns/{character.CampaignId}/characters/{character.Id}.json") .Get(). ToWebRequest(); JObject charObject; using ( WebResponse response = await Task.Factory.FromAsync( request.BeginGetResponse, request.EndGetResponse, null)) using (var streamReader = new StreamReader(response.GetResponseStream())) using (var jsonReader = new JsonTextReader(streamReader)) charObject = JObject.Load(jsonReader); TargetCharacter = ToSummary(charObject); }
/// <summary> /// Checks a single entry agasint vulnDB Search API. /// </summary> /// <param name="consumerkey"></param> /// <param name="consumersecret"></param> /// <param name="Application"></param> /// <returns></returns> public static string vulndb_appCheck(String consumerkey, String consumersecret, String Application) { try { var requestEndPoint = new Uri("https://vulndb.cyberriskanalytics.com/oauth/request_token"); var authorizeEndPoint = new Uri("https://vulndb.cyberriskanalytics.com/oauth/authorize"); var accessEndPoint = new Uri("https://vulndb.cyberriskanalytics.com/oauth/access_token"); var ctx = new OAuthConsumerContext { ConsumerKey = consumerkey, ConsumerSecret = consumersecret, SignatureMethod = SignatureMethod.HmacSha1 }; var genericSession = new OAuthSession(ctx, requestEndPoint, authorizeEndPoint, accessEndPoint); var targetServiceUri = new Uri("https://vulndb.cyberriskanalytics.com/api/v1/vulnerabilities/search_query?query=\"" + Application.ToString() + "\""); var respText = genericSession.Request().Get().ForUri(targetServiceUri).ToString(); return(respText); } catch (WebException ex) { using (var stream = ex.Response.GetResponseStream()) using (var reader = new StreamReader(stream)) { Console.WriteLine(reader.ReadToEnd()); return("Nothing Found for: " + Application.ToString()); } } }
public string GetResponse(OAuthSession session, string url) { IToken accessToken = MyTokenBase; var response = session.Request(accessToken).Get().ForUrl(url).ToString(); return(response); }
/// <summary> /// Used to Check if the API key is valid or not. /// </summary> /// <param name="consumerkey"></param> /// <param name="consumersecret"></param> /// <returns></returns> public static string CMS_Auditor(String consumerkey, String consumersecret) { try { var requestEndPoint = new Uri("https://vulndb.cyberriskanalytics.com/oauth/request_token"); var authorizeEndPoint = new Uri("https://vulndb.cyberriskanalytics.com/oauth/authorize"); var accessEndPoint = new Uri("https://vulndb.cyberriskanalytics.com/oauth/access_token"); var ctx = new OAuthConsumerContext { ConsumerKey = consumerkey, ConsumerSecret = consumersecret, SignatureMethod = SignatureMethod.HmacSha1 }; var genericSession = new OAuthSession(ctx, requestEndPoint, authorizeEndPoint, accessEndPoint); var targetServiceUri = new Uri("https://vulndb.cyberriskanalytics.com/api/v1/vulnerabilities/search_query?utf8=✓&query=teamviewer"); var respText = genericSession.Request().Get().ForUri(targetServiceUri).ToString(); return(respText); } catch (WebException ex) { using (var stream = ex.Response.GetResponseStream()) using (var reader = new StreamReader(stream)) { Console.WriteLine(reader.ReadToEnd()); return("Please Check your API Key and Secret"); } } }
private static string GetDevDefinedOAuthHeader(string consumerKey, string consumerSecret, string accessToken, string accessTokenSecret, HttpWebRequest webRequest, string requestBody) { OAuthConsumerContext consumerContext = new OAuthConsumerContext { ConsumerKey = consumerKey, SignatureMethod = SignatureMethod.HmacSha1, ConsumerSecret = consumerSecret, UseHeaderForOAuthParameters = true }; //We already have OAuth tokens, so OAuth URIs below are not used - set to example.com OAuthSession oSession = new OAuthSession(consumerContext, "https://www.example.com", "https://www.example.com", "https://www.example.com"); oSession.AccessToken = new TokenBase { Token = accessToken, ConsumerKey = consumerKey, TokenSecret = accessTokenSecret }; IConsumerRequest consumerRequest = oSession.Request(); consumerRequest = ConsumerRequestExtensions.ForMethod(consumerRequest, webRequest.Method); if (requestBody != null) { consumerRequest = consumerRequest.Post().WithRawContentType(webRequest.ContentType).WithRawContent(System.Text.Encoding.ASCII.GetBytes(requestBody)); } consumerRequest = ConsumerRequestExtensions.ForUri(consumerRequest, webRequest.RequestUri); consumerRequest = consumerRequest.SignWithToken(); return(consumerRequest.Context.GenerateOAuthParametersForHeader()); }
public void GoogleConsumer() { X509Certificate2 certificate = TestCertificates.OAuthTestCertificate(); string requestUrl = "https://www.google.com/accounts/OAuthGetRequestToken"; string userAuthorizeUrl = "https://www.google.com/accounts/accounts/OAuthAuthorizeToken"; string accessUrl = "https://www.google.com/accounts/OAuthGetAccessToken"; string callBackUrl = "http://www.mysite.com/callback"; var consumerContext = new OAuthConsumerContext { ConsumerKey = "weitu.googlepages.com", SignatureMethod = SignatureMethod.RsaSha1, Key = certificate.PrivateKey }; var session = new OAuthSession(consumerContext, requestUrl, userAuthorizeUrl, accessUrl) .WithQueryParameters(new { scope = "http://www.google.com/m8/feeds" }); // get a request token from the provider IToken requestToken = session.GetRequestToken(); // generate a user authorize url for this token (which you can use in a redirect from the current site) string authorizationLink = session.GetUserAuthorizationUrlForToken(requestToken, callBackUrl); // exchange a request token for an access token IToken accessToken = session.ExchangeRequestTokenForAccessToken(requestToken); // make a request for a protected resource string responseText = session.Request().Get().ForUrl("http://www.google.com/m8/feeds/contacts/default/base").ToString(); }
public ActionResult Exercises() { OAuthSession session = BuildSession(); string response = session.Request().ForMethod("GET").ForUrl("http://www.khanacademy.org/api/v1/user/exercises").SignWithToken().ReadBody(); return(View((object)response)); }
private static void Main() { string requestUrl = "https://apis.daum.net/oauth/requestToken"; string userAuthorizeUrl = "https://apis.daum.net/oauth/authorize"; string accessUrl = "https://apis.daum.net/oauth/accessToken"; string callbackUrl = "oob"; var consumerContext = new OAuthConsumerContext { //TODO:Daum OAuth소개 페이지(https://apis.daum.net/oauth/consumer/list)에서 등록된 Consumer 정보 입력 ConsumerKey = "eb3eff10-b95d-455c-8572-e7858a2b34d0", ConsumerSecret = "suz6.HUjzlaG-S9ezBzFQ11FtKhQvv8cdT-9C_hWBFthpUmMTsOuUA00", SignatureMethod = SignatureMethod.HmacSha1, }; //OAuth 준비 var session = new OAuthSession(consumerContext, requestUrl, userAuthorizeUrl, accessUrl); session.WithQueryParameters(new Dictionary <string, string>() { { "oauth_callback", callbackUrl } }); // 1. request token 받기 DevDefined.OAuth.Framework.IToken requestToken = session.GetRequestToken(); // 인증주소 받기 string authorizationLink = session.GetUserAuthorizationUrlForToken(requestToken, callbackUrl); // 2. 사용자 인증 하기 System.Console.WriteLine("웹브라우저를 실행하여 다음 URL을 접속하세요."); System.Console.WriteLine(authorizationLink); System.Console.Write("\n\n웹브라우저에서 인증 후 반환 된 값을 입력하세요:"); string inputVerifier = System.Console.ReadLine(); // 얻어진 Verifier값을 포함시키기 session.WithQueryParameters(new Dictionary <string, string>() { { "oauth_verifier", inputVerifier } }); // 3. 인증 후 얻은 Verifier값을 이용하여 엑세스 토큰 얻기 DevDefined.OAuth.Framework.IToken accessToken = session.ExchangeRequestTokenForAccessToken(requestToken); // '게시글 쓰기(한줄메모장)' API를 호출 System.Console.WriteLine("OAuth를 통한 인증으로 '게시글 쓰기(한줄메모장)'를 호출하고 XML로 응답 받는 테스트를 합니다."); string apiUrl = "http://apis.daum.net/cafe/write_article/{cafeCode}/{boardId}.xml?"; //{cafeCode} - 카페코드 : //{boardId} apiUrl += string.Format("content={0}&", "여기는 메모를 삽입합니다."); apiUrl += string.Format("hideyn={0}&", "N"); //비밀글일때 Y string responseText = session.Request().Get().ForUrl(apiUrl).ToString(); System.Console.WriteLine(responseText); System.Console.ReadLine(); }
/// <summary> /// Creates a HttpRequest with oAuthSession (OAuth Token) and gets the response with invalidating user /// from QuickBooks for this app /// For Authorization: The request header must include the OAuth parameters defined by OAuth Core 1.0 Revision A. /// /// If the disconnect is successful, then the HTTP status code is 200 and /// the XML response includes the <ErrorCode> element with a 0 value. /// If an HTTP error is detected, then the HTTP status code is not 200. /// If an HTTP error is not detected but the disconnect is unsuccessful, /// then the HTTP status code is 200 and the response XML includes the <ErrorCode> element with a non-zero value. /// For example, if the OAuth access token expires or is invalid for some other reason, then the value of <ErrorCode> is 270. /// </summary> /// <param name="sender">Sender of the event.</param> /// <param name="e">Event args.</param> protected void Page_Load(object sender, EventArgs e) { OAuthConsumerContext consumerContext = new OAuthConsumerContext { ConsumerKey = ConfigurationManager.AppSettings["consumerKey"].ToString(), SignatureMethod = SignatureMethod.HmacSha1, ConsumerSecret = ConfigurationManager.AppSettings["consumerSecret"].ToString() }; OAuthSession oSession = new OAuthSession(consumerContext, Constants.OauthEndPoints.IdFedOAuthBaseUrl + Constants.OauthEndPoints.UrlRequestToken, Constants.OauthEndPoints.AuthorizeUrl, Constants.OauthEndPoints.IdFedOAuthBaseUrl + Constants.OauthEndPoints.UrlAccessToken); oSession.ConsumerContext.UseHeaderForOAuthParameters = true; if ((Session["accessToken"] + "").Length > 0) { oSession.AccessToken = new TokenBase { Token = HttpContext.Current.Session["accessToken"].ToString(), ConsumerKey = ConfigurationManager.AppSettings["consumerKey"].ToString(), TokenSecret = HttpContext.Current.Session["accessTokenSecret"].ToString() }; IConsumerRequest conReq = oSession.Request(); conReq = conReq.Get(); conReq = conReq.ForUrl(Constants.IaEndPoints.DisconnectUrl); try { conReq = conReq.SignWithToken(); } catch (Exception ex) { throw ex; } //Used just see the what header contains string header = conReq.Context.GenerateOAuthParametersForHeader(); //This method will clean up the OAuth Token txtServiceResponse = conReq.ReadBody(); //Reset All the Session Variables HttpContext.Current.Session.Remove("oauthToken"); // Add the invalid access token into session for the display of the Disconnect btn HttpContext.Current.Session["InvalidAccessToken"] = HttpContext.Current.Session["accessToken"]; // Dont remove the access token since this is required for Reconnect btn in the Blue dot menu // HttpContext.Current.Session.Remove("accessToken"); // Dont Remove flag since we need to display the blue dot menu for Reconnect btn in the Blue dot menu // HttpContext.Current.Session.Remove("Flag"); DisconnectFlg = "User is Disconnected from QuickBooks!"; //Remove the Oauth access token from the OauthAccessTokenStorage.xml OauthAccessTokenStorageHelper.RemoveInvalidOauthAccessToken(Session["FriendlyEmail"].ToString(), Page); } }
private static void Main() { string requestUrl = "https://apis.daum.net/oauth/requestToken"; string userAuthorizeUrl = "https://apis.daum.net/oauth/authorize"; string accessUrl = "https://apis.daum.net/oauth/accessToken"; string callBackUrl = "oob"; var consumerContext = new OAuthConsumerContext { //TODO:Daum OAuth소개 페이지(https://apis.daum.net/oauth/consumer/list)에서 등록된 Consumer 정보 입력 ConsumerKey = "{발급 받은 Key를 입력하세요.}", ConsumerSecret = "{발급 받은 Secret를 입력하세요.}", SignatureMethod = SignatureMethod.HmacSha1, }; //OAuth 준비 var session = new OAuthSession(consumerContext, requestUrl, userAuthorizeUrl, accessUrl); session.WithQueryParameters(new Dictionary <string, string>() { { "oauth_callback", callBackUrl } }); // 1. request token 받기 DevDefined.OAuth.Framework.IToken requestToken = session.GetRequestToken(); // 인증주소 받기 string authorizationLink = session.GetUserAuthorizationUrlForToken(requestToken, callBackUrl); // 2. 사용자 인증 하기 System.Console.WriteLine("웹브라우저를 실행하여 다음 URL을 접속하세요."); System.Console.WriteLine(authorizationLink); System.Console.Write("\n\n웹브라우저에서 인증 후 반환 된 값을 입력하세요:"); string inputVerifier = System.Console.ReadLine(); // 얻어진 Verifier값을 포함시키기 session.WithQueryParameters(new Dictionary <string, string>() { { "oauth_verifier", inputVerifier } }); // 3. 인증 후 얻은 Verifier값을 이용하여 엑세스 토큰 얻기 DevDefined.OAuth.Framework.IToken accessToken = session.ExchangeRequestTokenForAccessToken(requestToken); // '요즘 가입여부 확인하기' API를 통해 인증 확인하기 System.Console.WriteLine("OAuth를 통한 인증으로 '요즘 글쓰기'를 테스트합니다."); ConsumerRequest cr = session.Request().Post().ForUrl("https://apis.daum.net/yozm/v1_0/message/add.xml"); cr = cr.WithFormParameters(new Dictionary <string, string>() { { "message", System.Web.HttpUtility.UrlEncode("%$가나다^$%^%$^RTY<><><><><") } }); string responseText = cr.ToString(); System.Console.WriteLine(responseText); System.Console.ReadLine(); }
/// <summary> /// Get the resource data from the URI. /// </summary> /// <param name="resourceUri">The resource URI containing the resource data.</param> /// <returns>The resource data.</returns> public string GetResourceData(Uri resourceUri) { if (resourceUri == null) { throw new ArgumentNullException("resourceUri"); } // Make sure an access token has been generated. if (_oAuthSession != null && _oAuthSession.AccessToken != null) { // Make a request for a protected resource return(_oAuthSession.Request().Get().ForUrl(resourceUri.ToString()).ToString()); } else { throw new Exception("An access token has not been generated. Generate an access token before requesting resource data."); } }
private static void Main() { string requestUrl = "https://apis.daum.net/oauth/requestToken"; string userAuthorizeUrl = "https://apis.daum.net/oauth/authorize"; string accessUrl = "https://apis.daum.net/oauth/accessToken"; string callbackUrl = "oob"; var consumerContext = new OAuthConsumerContext { //TODO:Daum OAuth소개 페이지(https://apis.daum.net/oauth/consumer/list)에서 등록된 Consumer 정보 입력 ConsumerKey = "eb3eff10-b95d-455c-8572-e7858a2b34d0", ConsumerSecret = "suz6.HUjzlaG-S9ezBzFQ11FtKhQvv8cdT-9C_hWBFthpUmMTsOuUA00", SignatureMethod = SignatureMethod.HmacSha1, }; //OAuth 준비 var session = new OAuthSession(consumerContext, requestUrl, userAuthorizeUrl, accessUrl); session.WithQueryParameters(new Dictionary <string, string>() { { "oauth_callback", callbackUrl } }); // 1. request token 받기 DevDefined.OAuth.Framework.IToken requestToken = session.GetRequestToken(); // 인증주소 받기 string authorizationLink = session.GetUserAuthorizationUrlForToken(requestToken, callbackUrl); // 2. 사용자 인증 하기 System.Console.WriteLine("웹브라우저를 실행하여 다음 URL을 접속하세요."); System.Console.WriteLine(authorizationLink); System.Console.Write("\n\n웹브라우저에서 인증 후 반환 된 값을 입력하세요:"); string inputVerifier = System.Console.ReadLine(); // 얻어진 Verifier값을 포함시키기 session.WithQueryParameters(new Dictionary <string, string>() { { "oauth_verifier", inputVerifier } }); session.WithQueryParameters(new Dictionary <string, string>() { { "content", System.Web.HttpUtility.HtmlEncode("~다!음@ #요$즘% ^특&수*문(자) -_\'발=+송\\| \"테<스>;트/") } }); //session.WithQueryParameters(new Dictionary<string, string>() { { "content", System.Web.HttpUtility.UrlEncode("한글") } }); // 3. 인증 후 얻은 Verifier값을 이용하여 엑세스 토큰 얻기 DevDefined.OAuth.Framework.IToken accessToken = session.ExchangeRequestTokenForAccessToken(requestToken); // '요즘 가입여부 확인하기' API를 통해 인증 확인하기 System.Console.WriteLine("OAuth를 통한 인증으로 '요즘 가입여부 확인하기'를 테스트합니다."); string responseText = session.Request().Post().ForUrl("https://apis.daum.net/cafe/write_article/JJGO/JVYh.xml?").ToString(); System.Console.WriteLine(responseText); System.Console.ReadLine(); }
/// <summary> /// <see cref="IBaseOAuthService{T}.Get{K}(string, string)"/> /// </summary> public K Get <K>(string resource, string resourceContext) where K : new() { try { var webRequest = _session.Request().WithTimeout(TIMEOUT).Get().ForUrl(_baseUrl + resourceContext + resource).ToWebRequest(); using (var response = webRequest.GetResponse() as HttpWebResponse) { if (response != null) { using (var reader = new StreamReader(response.GetResponseStream())) { return(JsonConvert.DeserializeObject <K>(reader.ReadToEnd())); } } } } catch (WebException wex) { if (wex.Response != null) { using (var errorResponse = wex.Response as HttpWebResponse) { using (var reader = new StreamReader(errorResponse.GetResponseStream())) { ErrorResponse er = JsonConvert.DeserializeObject <ErrorResponse>(reader.ReadToEnd()); throw new JiraException(er); } } } else { ErrorResponse er = new ErrorResponse(); er.ErrorMessages = new string[1]; er.ErrorMessages[0] = wex.Message; throw new JiraException(er); } } return(default(K)); }
public static void Main(string[] args) { string requestTokenUrl = "https://api.projectplace.com/initiate"; string authorizationUrl = "https://api.projectplace.com/authorize"; string tokenUrl = "https://api.projectplace.com/token"; string apiEndpoint = "https://api.projectplace.com"; string consumerKey = "APPLICATION_KEY_GOES_HERE"; string consumerSecret = "APPLICATION_SECRET_GOES_HERE"; IToken accessToken = null; // 1. If you already have an access token - uncomment this section and enter it here. //IToken accessToken = new TokenBase(); //accessToken.Token = "ACCESS_TOKEN_KEY_GOES_HERE"; //accessToken.TokenSecret = "ACCESS_TOKEN_SECRET_GOES_HERE"; // 2. Create the consumer context OAuthConsumerContext consumerContext = new OAuthConsumerContext { ConsumerKey = consumerKey, ConsumerSecret = consumerSecret, SignatureMethod = SignatureMethod.HmacSha1, UseHeaderForOAuthParameters = true, }; // 3. Start session OAuthSession session = new OAuthSession(consumerContext, requestTokenUrl, authorizationUrl, tokenUrl); // 4. If you do not have an access token, you will first have to authorize // access. In this part we formulate a URI which you must open in a web-broser. // Once you have completed the log-in and accepted access for the application // You will be redirected to whatever page is in the applications callback // Simply check the URL and look for the oauth_verifer parameter, and copy that if (accessToken == null) { IToken requestToken = session.GetRequestToken(); string authorizationLink = session.GetUserAuthorizationUrlForToken(requestToken); Console.WriteLine("Authorize this application by going to {0}", authorizationLink); Console.WriteLine("Then enter the oauth_verifier here:"); string verificationCode = Console.ReadLine(); accessToken = session.ExchangeRequestTokenForAccessToken(requestToken, verificationCode); Console.WriteLine("Here is your new access token: {0} with secret: {1}\n", accessToken.Token, accessToken.TokenSecret); } // 5. We have an access token - assign it to the session session.AccessToken = accessToken; // 6. Lets ask for a protected resource, such as your own profile string responseText = session.Request().Get().ForUrl(apiEndpoint + "/1/user/me/profile").ToString(); Profile profile = JsonConvert.DeserializeObject <Profile>(responseText); Console.WriteLine("Successfully fetched profile for {0} {1}", profile.first_name, profile.last_name); }
private static void GetHistoricalMatchupData() { StreamWriter sw = new StreamWriter(@"Data\AllMatchupScores" + DateTime.Now.ToString("yy-MM-dd.hh.mm.ss") + ".tab", false); List <string> weeks = new List <string> { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16" }; try { Dictionary <string, List <string> > seasonIds = GetAllSeasonIds(); //write header line sw.WriteLine( "Week\tWeekStart\tWeekEnd\tIsPlayoffs\tTeam1\tTeam2\tTeam1Points\tTeam2Points\tTeam1ExpPoints\tTeam2ExpPoints"); foreach (string season in seasonIds.Keys) { List <string> seasonKeys = seasonIds[season]; foreach (string week in weeks) { string scoreBoardQuery = "league/" + seasonKeys[0] + ".l." + seasonKeys[1] + "/scoreboard;week=" + week; IConsumerRequest responseRequest = session.Request().Get().ForUrl(ApiUrl + scoreBoardQuery); List <Matchup> matchupData = new List <Matchup>(); //WriteOutScoreboardData(responseRequest, sw, week, ref matchupData, currentRosters); } } } catch (Exception e) { LogError(e); } sw.Close(); }
static void Main(string[] args) { string requestUrl = "https://apis.daum.net/oauth/requestToken"; string userAuthorizeUrl = "https://apis.daum.net/oauth/authorize"; string accessUrl = "https://apis.daum.net/oauth/accessToken"; string callbackUrl = "oob"; var consumerContext = new OAuthConsumerContext { //Daum OAuth소개 페이지(http://dna.daum.net/myapi/authapi)에서 등록된 Consumer 정보 입력 ConsumerKey = "[프로필 API용 OAuth 컨슈머 등록한 뒤 발급된 Cosumer키를 입력하세요]", ConsumerSecret = "[프로필 API용 OAuth 컨슈머 등록한 뒤 발급된 Cosumer Secret키를 입력하세요]", SignatureMethod = SignatureMethod.HmacSha1, }; //OAuth 준비 var session = new OAuthSession(consumerContext, requestUrl, userAuthorizeUrl, accessUrl); session.WithQueryParameters(new Dictionary <string, string>() { { "oauth_callback", callbackUrl } }); // 1. request token 받기 DevDefined.OAuth.Framework.IToken requestToken = session.GetRequestToken(); // 인증주소 받기 string authorizationLink = session.GetUserAuthorizationUrlForToken(requestToken, callbackUrl); // 2. 사용자 인증 하기 System.Console.WriteLine("웹브라우저를 실행하여 다음 URL을 접속하세요."); System.Console.WriteLine(authorizationLink); System.Console.Write("\n\n웹브라우저에서 인증 후 반환 된 값을 입력하세요:"); string inputVerifier = System.Console.ReadLine(); // 얻어진 Verifier값을 포함시키기 session.WithQueryParameters(new Dictionary <string, string>() { { "oauth_verifier", inputVerifier } }); // 3. 인증 후 얻은 Verifier값을 이용하여 엑세스 토큰 얻기 DevDefined.OAuth.Framework.IToken accessToken = session.ExchangeRequestTokenForAccessToken(requestToken); // '프로필 정보보기' API를 통해 인증 확인하기 System.Console.WriteLine("OAuth를 통한 인증으로 '프로필 정보보기'를 테스트합니다."); string responseText = session.Request().Post().ForUrl("https://apis.daum.net/profile/show.xml").ToString(); System.Console.WriteLine(responseText); System.Console.ReadLine(); }
public String AccessProtectedResource(HMEntities.UserProfiles.User currentUser, String parameters) { String URL = Chpp.ResourcesURL + "?" + parameters; OAuthSession oAuthSession = GetOAuthSession(Chpp.ConsumerKey, Chpp.ConsumerSecret); oAuthSession.AccessToken = new TokenBase() { ConsumerKey = Chpp.ConsumerKey, Token = currentUser.accessToken, TokenSecret = currentUser.accessTokenSecret }; IConsumerRequest request = oAuthSession.Request().Get().ForUrl(URL); return(request.ToString()); }
public void TokenSecretNotIncludedInQueryParametersForGetRequest() { var session = new OAuthSession(new OAuthConsumerContext {ConsumerKey = "consumer"}, "http://localhost/request", "http://localhost/userauth", "http://localhost/access"); var accessToken = new TokenBase {ConsumerKey = "consumer", Token = "token", TokenSecret = "secret"}; RequestDescription description = session .Request(accessToken) .Get() .ForUrl("http://localhost/") .SignWithToken() .GetRequestDescription(); Assert.False(description.Url.ToString().Contains(Parameters.OAuth_Token_Secret)); }
public void TokenSecretNotIncludedInAuthorizationHeaderForPostRequestWithUseAuthorizationHeaders() { var session = new OAuthSession(new OAuthConsumerContext {ConsumerKey = "consumer", UseHeaderForOAuthParameters = true}, "http://localhost/request", "http://localhost/userauth", "http://localhost/access"); var accessToken = new TokenBase {ConsumerKey = "consumer", Token = "token", TokenSecret = "secret"}; RequestDescription description = session .Request(accessToken) .Post() .ForUrl("http://localhost/") .SignWithToken() .GetRequestDescription(); Assert.False(description.Headers["Authorization"].Contains(Parameters.OAuth_Token_Secret)); }
private async Task LoadInformation() { OAuthSession newSession = CreateOAuthSession(); await FillCampaigns(newSession); CharacterInfo foundCurrentCharacter = null; foreach (CampaignInfo campaign in AllCampaigns) { HttpWebRequest request = newSession.Request() .ForUrl($"http://api.obsidianportal.com/v1/campaigns/{campaign.Id}/characters.json") .Get() .ToWebRequest(); JArray charactersObject; using ( WebResponse response = await Task.Factory.FromAsync( request.BeginGetResponse, request.EndGetResponse, null)) using (var streamReader = new StreamReader(response.GetResponseStream())) using (var jsonReader = new JsonTextReader(streamReader)) charactersObject = JArray.Load(jsonReader); campaign.Characters = new ObservableCollection <CharacterInfo>( charactersObject.Select( c => new CharacterInfo { Id = (string)c["id"], Name = (string)c["name"], Player = (string)c["author"]["username"], CampaignId = campaign.Id })); campaign.Characters.Add( new CharacterInfo { Id = null, CampaignId = campaign.Id, Name = "<New>", Player = "<New>" }); foundCurrentCharacter = foundCurrentCharacter ?? campaign.Characters.FirstOrDefault(c => c.Id == _settings.LastCharacterId); } CurrentCharacter = foundCurrentCharacter; }
public string GetResource(string parameters) { System.Console.Out.WriteLine("Requesting: {0}", parameters); string url = OAuthProtectedResourceUrl + "?" + parameters; IConsumerRequest request = _oAuthSession.Request().Get().ForUrl(url); string result = request.ToString(); if (result.Contains(@"chpperror.xml")) // <FileName>chpperror.xml</FileName> { int errorCode = -1; string errorDescription = "unknown CHPP error"; try { XDocument doc = XDocument.Load(new StringReader(result)); XElement elRoot = doc.Root; if (elRoot != null) { XElement elErrorCode = elRoot.Element("ErrorCode"); if (elErrorCode != null) { int.TryParse(elErrorCode.Value, out errorCode); } XElement elErrorDescription = elRoot.Element("Error"); if (elErrorDescription != null && !string.IsNullOrEmpty(elErrorDescription.Value)) { errorDescription = elErrorDescription.Value; } } } finally { throw new ChppException(errorCode, errorDescription); } } return(result); }