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(); }
// this performs our main OAuth authentication, performing // the request token retrieval, authorization, and exchange // for an access token public IToken GetAccessToken() { var consumerContext = new OAuthConsumerContext() { ConsumerKey = "anyone" }; var rest_client = new JsonServiceClient(BaseUri); var url = new Rainy.WebService.ApiRequest().ToUrl("GET"); var api_ref = rest_client.Get <ApiResponse> (url); var session = new OAuthSession(consumerContext, api_ref.OAuthRequestTokenUrl, api_ref.OAuthAuthorizeUrl, api_ref.OAuthAccessTokenUrl); IToken request_token = session.GetRequestToken(); // we dont need a callback url string link = session.GetUserAuthorizationUrlForToken(request_token, "http://example.com/"); // visit the link to perform the authorization (no interaction needed) HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(link); // disallow auto redirection, since we are interested in the location header only req.AllowAutoRedirect = false; // the oauth_verifier we need, is part of the querystring in the (redirection) // 'Location:' header string location = ((HttpWebResponse)req.GetResponse()).Headers ["Location"]; var query = string.Join("", location.Split('?').Skip(1)); var oauth_data = System.Web.HttpUtility.ParseQueryString(query); IToken access_token = session.ExchangeRequestTokenForAccessToken(request_token, oauth_data ["oauth_verifier"]); return(access_token); }
//returns a consumer reference public static IOAuthSession EtsyConsumer() { //API EndPoints string requestUrl = "https://openapi.etsy.com/v2/oauth/request_token?scope=transactions_r%20listings_r"; string userAuthorizeUrl = "https://www.etsy.com/oauth/signin"; string accessUrl = "https://openapi.etsy.com/v2/oauth/access_token"; //Dev Information var consumerContext = new OAuthConsumerContext { ConsumerKey = key, ConsumerSecret = secret, SignatureMethod = SignatureMethod.HmacSha1 }; OAuthSession session = new OAuthSession(consumerContext, requestUrl, userAuthorizeUrl, accessUrl); IToken requestToken = session.GetRequestToken(); string authorizationLink = session.GetUserAuthorizationUrlForToken(requestToken, "https://bit.ly/2KQfh6x"); //Redirect to the Authorization site System.Diagnostics.Process.Start(authorizationLink); Console.Write("Enter Verification String: "); string verification = Console.ReadLine(); session.ExchangeRequestTokenForAccessToken(requestToken, verification); WriteToBinaryFile(@"saveData.txt", session.AccessToken); return(session); }
public void GetUserAuthorizationUriForTokenWithoutCallback() { var session = new OAuthSession(new OAuthConsumerContext(), "http://localhost/request", "http://localhost/userauth", "http://localhost/access"); string actual = session.GetUserAuthorizationUrlForToken(new TokenBase {Token = "token"}, null); Assert.Equal("http://localhost/userauth?oauth_token=token", actual); }
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(); }
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(); }
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(); }
public string GetUserAuthorizationUrlForToken() { if (_requestToken == null) { _requestToken = GetRequestToken(); } return(_session.GetUserAuthorizationUrlForToken(_consumerToken.Token, _requestToken)); }
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); }
public IToken GetAccessToken(OAuthSession session) { IToken requestToken = session.GetRequestToken(); string authorizationLink = session.GetUserAuthorizationUrlForToken(MyTokenBase.ConsumerKey, requestToken); Process.Start(authorizationLink); Console.Write("Please enter pin from browser: "); string pin = Console.ReadLine(); IToken accessToken = session.ExchangeRequestTokenForAccessToken(requestToken, pin.ToUpper()); return(accessToken); }
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 GetRequestTokenURL() { String AuthorizationURL = String.Empty; OAuthSession oauthSession = GetOAuthSession(Chpp.ConsumerKey, Chpp.ConsumerSecret); try { requestToken = oauthSession.GetRequestToken("GET"); AuthorizationURL = oauthSession.GetUserAuthorizationUrlForToken(requestToken); } catch { AuthorizationURL = String.Empty; } return(AuthorizationURL); }
/// <summary> /// Generate a user authorize url for this token (which can use in a redirect from the current site) /// </summary> /// <param name="requestToken">The request token</param> /// <param name="callBackUri">the callback URI</param> /// <returns>The URL string to the user authorisation web service.</returns> public string GetUserAuthorizationUrl(IToken requestToken, Uri callBackUri) { if (requestToken == null) { throw new ArgumentNullException("requestToken"); } if (callBackUri == null) { throw new ArgumentNullException("callBackUri"); } // Create a new session CreateSession(); // Generate a user authorize url for this token (which you can use in a redirect from the current site) return(_oAuthSession.GetUserAuthorizationUrlForToken(requestToken, callBackUri.ToString())); }
private static TwitchPassword auth( ) { try { /* * https://api.twitch.tv/kraken/oauth2/authorize?response_type=token&client_id=r8829yrhzewp4gwopt9gh90py0s8p3p&redirect_uri=http://integrationservices.blizzeta.net&scope=user_read%20user_blocks_edit%20user_blocks_read%20user_follows_edit%20channel_read%20channel_editor%20channel_commercial%20channel_stream%20channel_subscriptions%20user_subscriptions%20chat_login%20channel_check_subscription */ //Process.Start ( Global.AuthorizationFullPermissions ); string url = ParseAuthorization( ); X509Certificate2 cert = DevDefined.OAuth.Tests.TestCertificates.OAuthTestCertificate( ); OAuthConsumerContext context = new OAuthConsumerContext { ConsumerKey = "api.twitch.tv", SignatureMethod = SignatureMethod.RsaSha1, Key = cert.PrivateKey }; IOAuthSession session = new OAuthSession(context, null, url, null).WithQueryParameters(new { scope = Global.Redirect }); IToken request = session.GetRequestToken( ); string authorize = session.GetUserAuthorizationUrlForToken(request, Global.Redirect); IToken access = session.ExchangeRequestTokenForAccessToken(request); string response = session.Request( ).Get( ).ForUrl(Global.AuthorizationFullPermissions).ToString( ); Console.WriteLine(response); TwitchPassword pt = JsonConvert.DeserializeObject <TwitchPassword> (response); return(pt); } catch (Exception ex) { Console.WriteLine("Error: {0}", ex.Message); if (ex.InnerException != null) { Console.WriteLine("Inner Error: {0}", ex.InnerException.Message); } } return(null); }
// authenticated connection methods: /// <summary> /// Performs the first step in the authorisation handshake. It requests a verification code from the TradeMeApi. /// </summary> /// <returns>String The link to location to get the verification code from.</returns> public string GetVerificationCode() { var consumerContext = new OAuthConsumerContext { ConsumerKey = ConsumerKey, ConsumerSecret = ConsumerSecret, SignatureMethod = DevDefined.OAuth.Framework.SignatureMethod.HmacSha1, UseHeaderForOAuthParameters = true }; var session = new OAuthSession( consumerContext, RequestTokenUrl + ScopeOfRequest, AuthorizeUrl, AccessUrl); RequestToken = session.GetRequestToken(); // link to website var link = session.GetUserAuthorizationUrlForToken(RequestToken); return(link); }
public ActionResult Authenticate() { var consumerContext = new OAuthConsumerContext { ConsumerKey = ConfigHelper.Yahoo.OAuth.ConsumerKey, SignatureMethod = SignatureMethod.HmacSha1, ConsumerSecret = ConfigHelper.Yahoo.OAuth.ConsumerSecret }; var session = new OAuthSession(consumerContext, ConfigHelper.Yahoo.RequestUrl, ConfigHelper.Yahoo.UserAuthorizeUrl, ConfigHelper.Yahoo.AccessUrl, ConfigHelper.Yahoo.CallbackUrl); var requestToken = session.GetRequestToken(); var authorizationLink = session.GetUserAuthorizationUrlForToken(requestToken, ConfigHelper.Yahoo.CallbackUrl); SessionHelper.OAuthSession = session; SessionHelper.OAuthToken = requestToken; return(Redirect(authorizationLink)); }
public string GetAuthorizeUrl() { _requestToken = _oAuthSession.GetRequestToken(); return(_oAuthSession.GetUserAuthorizationUrlForToken(_requestToken, "oob")); }
/// <summary> /// <see cref="IBaseOAuthService{T}.GetUserAuthorizationUrlForToken(T)"/> /// </summary> public string GetUserAuthorizationUrlForToken(IToken requestToken) { string ret = _session.GetUserAuthorizationUrlForToken(requestToken); return(ret); }
public static void Run() { // Create the consumer session OAuthConsumerContext consumerContext = new OAuthConsumerContext { ConsumerKey = "ZGIXM2M1Y2RIZJGYNGY1Y2EWZGYZMW", ConsumerSecret = "RZRCMBRPK57EAG6GRO4GPLYDH9REPX", SignatureMethod = SignatureMethod.HmacSha1, UseHeaderForOAuthParameters = true, UserAgent = string.Format("Xero.API.ScreenCast v1.0 (Public App Testing)") }; OAuthSession consumerSession = new OAuthSession( consumerContext, Settings.Default.RequestTokenURI, Settings.Default.AuthoriseURI, Settings.Default.AccessTokenURI); // 1. Get a request token IToken requestToken = consumerSession.GetRequestToken(); Console.WriteLine("Request Token Key: {0}", requestToken.Token); Console.WriteLine("Request Token Secret: {0}", requestToken.TokenSecret); // 2. Get the user to log into Xero using the request token in the querystring //string authorisationUrl = Settings.Default.AuthoriseURI.AbsoluteUri + "?oauth_token=" + HttpUtility.UrlEncode(requestTokenKey); string authorisationUrl = consumerSession.GetUserAuthorizationUrlForToken(requestToken); Process.Start(authorisationUrl); // 3. Get the use to enter the authorisation code from Xero (4-7 digit number) Console.WriteLine("Please input the code you were given in Xero:"); var verificationCode = Console.ReadLine(); if (string.IsNullOrEmpty(verificationCode)) { Console.WriteLine("You didn't type a verification code!"); return; } verificationCode = verificationCode.Trim(); // 4. Use the request token and verification code to get an access token IToken accessToken; try { accessToken = consumerSession.ExchangeRequestTokenForAccessToken(requestToken, verificationCode); } catch (OAuthException ex) { Console.WriteLine("An OAuthException was caught:"); Console.WriteLine(ex.Report); return; } Console.WriteLine("Access Token Key: {0}", accessToken.Token); Console.WriteLine("Access Token Secret: {0}", accessToken.TokenSecret); // 5. Make a call to api.xero.com to check that we can use the access token. IConsumerRequest getOrganisationRequest = consumerSession .Request() .ForMethod("GET") .ForUri(new Uri("https://api.xero.com/api.xro/2.0/Organisation")) .SignWithToken(accessToken); string getOrganisationResponse = getOrganisationRequest.ToString(); if (getOrganisationResponse != string.Empty) { var organisationXml = XElement.Parse(getOrganisationResponse); string organisationName = organisationXml.XPathSelectElement("//Organisation/Name").Value; Console.WriteLine(string.Format("You have been authorised against organisation: {0}", organisationName)); } // 6. Make a PUT call to the API - add a dummy contact Console.WriteLine("Please enter the name of a new contact to add to Xero"); string contactName = Console.ReadLine(); if (string.IsNullOrEmpty(contactName)) { return; } string putContactRequestBody = string.Format("<Contacts><Contact><Name>{0}</Name></Contact></Contacts>", contactName); string putContactResponse; IConsumerRequest putContactRequest = consumerSession .Request() .ForMethod("PUT") .ForUri(new Uri("https://api.xero.com/api.xro/2.0/Contacts")) .WithFormParameters(new { xml = putContactRequestBody }) .SignWithToken(accessToken); try { putContactResponse = putContactRequest.ToString(); } catch (OAuthException ex) { Console.WriteLine("An OAuthException was caught:"); Console.WriteLine(ex.Report); return; } catch (WebException ex) { putContactResponse = ex.Response.GetResponseStream().ReadToEnd(); Console.WriteLine("A WebException was caught:"); Console.WriteLine(putContactResponse); return; } if (putContactResponse != string.Empty) { var responseElement = XElement.Parse(putContactResponse); string statusCode = responseElement.XPathSelectElement("/Status").Value; if (statusCode == "OK") { string contactId = responseElement.XPathSelectElement("/Contacts/Contact[1]/ContactID").Value; Console.WriteLine(string.Format("The contact '{0}' was created with id: {1}", contactName, contactId)); } } // 7. Try to update the contact that's just been created, but this time use a POST method string postContactRequestBody = string.Format("<Contacts><Contact><Name>{0}</Name><EmailAddress>{1}@nowhere.com</EmailAddress></Contact></Contacts>", contactName, contactName.ToLower().Replace(" ", ".")); string postContactResponse; IConsumerRequest postContactRequest = consumerSession .Request() .ForMethod("POST") .ForUri(new Uri("https://api.xero.com/api.xro/2.0/Contacts")) .WithFormParameters(new { xml = postContactRequestBody }) .SignWithToken(accessToken); try { postContactResponse = postContactRequest.ToString(); } catch (OAuthException ex) { Console.WriteLine("An OAuthException was caught:"); Console.WriteLine(ex.Report); return; } catch (WebException ex) { putContactResponse = ex.Response.GetResponseStream().ReadToEnd(); Console.WriteLine("A WebException was caught:"); Console.WriteLine(putContactResponse); return; } if (postContactResponse != string.Empty) { var responseElement = XElement.Parse(postContactResponse); string statusCode = responseElement.XPathSelectElement("/Status").Value; if (statusCode == "OK") { string emailAddress = responseElement.XPathSelectElement("/Contacts/Contact[1]/EmailAddress").Value; Console.WriteLine(string.Format("The contact '{0}' was updated with email address: {1}", contactName, emailAddress)); } } }
public static void Run() { // 0. Create the consumer session OAuthConsumerContext consumerContext = new OAuthConsumerContext { ConsumerKey = PartnerConsumerKey, ConsumerSecret = PartnerConsumerSecret, SignatureMethod = SignatureMethod.RsaSha1, UseHeaderForOAuthParameters = true, UserAgent = PartnerUserAgentString, Key = OAuthSigningCertificate.PrivateKey }; OAuthSession consumerSession = new OAuthSession( consumerContext, Settings.Default.PartnerRequestTokenURI, Settings.Default.AuthoriseURI, Settings.Default.PartnerAccessTokenURI); // Replace the default ConsumerRequest factory with one that can create ConsumerRequest classes which use a client SSL certificate consumerSession.ConsumerRequestFactory = new DefaultConsumerRequestFactory(ClientSslCertificateFactory); // 1. Get a request token IToken requestToken; try { requestToken = consumerSession.GetRequestToken(); } catch (Exception ex) { Console.WriteLine(ex.ToString()); return; } Console.WriteLine("Request Token Key: {0}", requestToken.Token); Console.WriteLine("Request Token Secret: {0}", requestToken.TokenSecret); // 2. Get the user to log into Xero using the request token in the querystring //string authorisationUrl = Settings.Default.AuthoriseURI.AbsoluteUri + "?oauth_token=" + HttpUtility.UrlEncode(requestTokenKey); string authorisationUrl = consumerSession.GetUserAuthorizationUrlForToken(requestToken); Process.Start(authorisationUrl); // 3. Get the use to enter the authorisation code from Xero (4-7 digit number) Console.WriteLine("Please input the code you were given in Xero:"); var verificationCode = Console.ReadLine(); if (string.IsNullOrEmpty(verificationCode)) { Console.WriteLine("You didn't type a verification code!"); return; } verificationCode = verificationCode.Trim(); // 4. Use the request token and verification code to get an access token AccessToken accessToken; try { accessToken = consumerSession.ExchangeRequestTokenForAccessToken(requestToken, verificationCode); } catch (OAuthException ex) { Console.WriteLine("An OAuthException was caught:"); Console.WriteLine(ex.Report); return; } Console.WriteLine("Access Token Key: {0}", accessToken.Token); Console.WriteLine("Access Token Secret: {0}", accessToken.TokenSecret); // 5. Make a call to api-partner.network.xero.com to check that we can use the access token. IConsumerRequest getOrganisationRequest = consumerSession .Request() .ForMethod("GET") .ForUri(new Uri("https://api-partner.network.xero.com/api.xro/2.0/Organisation")) .SignWithToken(accessToken); string getOrganisationResponse = getOrganisationRequest.ToString(); if (getOrganisationResponse != string.Empty) { XElement organisationXml = XElement.Parse(getOrganisationResponse); string organisationName = organisationXml.XPathSelectElement("//Organisation/Name").Value; Console.WriteLine(string.Format("You have been authorised against organisation: {0}", organisationName)); } // 5.1 Refresh the access token using the session handle try { accessToken = consumerSession.RenewAccessToken(accessToken, accessToken.SessionHandle); Console.WriteLine("The access token has been refreshed"); Console.WriteLine("New Access Token: " + accessToken.Token); Console.WriteLine("New Access Secret: " + accessToken.TokenSecret); } catch (Exception ex) { Console.WriteLine("The access token could not be refreshed:\r\n" + ex); return; } // 6. Make a PUT call to the API - add a dummy contact Console.WriteLine("Please enter the name of a new contact to add to Xero"); string contactName = Console.ReadLine(); if (string.IsNullOrEmpty(contactName)) { return; } string putContactRequestBody = string.Format("<Contacts><Contact><Name>{0}</Name></Contact></Contacts>", contactName); string putContactResponse; IConsumerRequest putContactRequest = consumerSession .Request() .ForMethod("PUT") .ForUri(new Uri("https://api-partner.network.xero.com/api.xro/2.0/Contacts")) .WithFormParameters(new { xml = putContactRequestBody }) .SignWithToken(accessToken); try { putContactResponse = putContactRequest.ToString(); } catch (OAuthException ex) { Console.WriteLine("An OAuthException was caught:"); Console.WriteLine(ex.Report); return; } catch (WebException ex) { putContactResponse = ex.Response.GetResponseStream().ReadToEnd(); Console.WriteLine("A WebException was caught:"); Console.WriteLine(putContactResponse); return; } if (putContactResponse != string.Empty) { var responseElement = XElement.Parse(putContactResponse); string statusCode = responseElement.XPathSelectElement("/Status").Value; if (statusCode == "OK") { string contactId = responseElement.XPathSelectElement("/Contacts/Contact[1]/ContactID").Value; Console.WriteLine(string.Format("The contact '{0}' was created with id: {1}", contactName, contactId)); } } // 7. Try to update the contact that's just been created, but this time use a POST method string postContactRequestBody = string.Format("<Contacts><Contact><Name>{0}</Name><EmailAddress>{1}@nowhere.com</EmailAddress></Contact></Contacts>", contactName, contactName.ToLower().Replace(" ", ".")); string postContactResponse; IConsumerRequest postContactRequest = consumerSession .Request() .ForMethod("POST") .ForUri(new Uri("https://api-partner.network.xero.com/api.xro/2.0/Contacts")) .WithFormParameters(new { xml = postContactRequestBody }) .SignWithToken(accessToken); try { postContactResponse = postContactRequest.ToString(); } catch (OAuthException ex) { Console.WriteLine("An OAuthException was caught:"); Console.WriteLine(ex.Report); return; } catch (WebException ex) { putContactResponse = ex.Response.GetResponseStream().ReadToEnd(); Console.WriteLine("A WebException was caught:"); Console.WriteLine(putContactResponse); return; } if (postContactResponse != string.Empty) { var responseElement = XElement.Parse(postContactResponse); string statusCode = responseElement.XPathSelectElement("/Status").Value; if (statusCode == "OK") { string emailAddress = responseElement.XPathSelectElement("/Contacts/Contact[1]/EmailAddress").Value; Console.WriteLine(string.Format("The contact '{0}' was updated with email address: {1}", contactName, emailAddress)); } } }
static void Main(string[] args) { var consumerContext = new OAuthConsumerContext { SignatureMethod = SignatureMethod.HmacSha1, ConsumerKey = "dai4siwkt27bo3r", // this is just a sample app setup for demo purposes called "DevDefinedOAuthTest", it's a sandbox app in "Development" mode. ConsumerSecret = "emsponeqnebimbm", UseHeaderForOAuthParameters = true // this is required for the PUT request with raw body to succeed. }; var session = new OAuthSession(consumerContext, "https://api.dropbox.com/1/oauth/request_token", "https://www.dropbox.com/1/oauth/authorize", "https://api.dropbox.com/1/oauth/access_token"); IToken requestToken = session.GetRequestToken(); string authorisationUrl = session.GetUserAuthorizationUrlForToken(requestToken); Console.WriteLine("Authorization Url: {0}", authorisationUrl); Process.Start(authorisationUrl); Console.WriteLine(); Console.WriteLine("Press enter once authorization complete"); Console.ReadLine(); session.ExchangeRequestTokenForAccessToken(requestToken); string accountInfo = session.Request().Get().ForUrl("https://api.dropbox.com/1/account/info").ReadBody(); Console.WriteLine("Account info: {0}", accountInfo); Console.WriteLine(); Console.WriteLine("Press enter to continue (will put file into sandbox)"); Console.ReadLine(); Console.WriteLine("Uploading..."); const string root = "sandbox"; // can also be "dropbox" (if app has all folders access) string fileName = "img_" + Guid.NewGuid() + ".png"; string putUrl = string.Format("https://api-content.dropbox.com/1/files_put/{0}/{1}", root, fileName); byte[] contents = File.ReadAllBytes("DevDefinedOAuthTitle.png"); IConsumerRequest putRequest = session.Request().Put().ForUrl(putUrl).WithRawContent(contents); string putInfo = putRequest.ReadBody(); Console.WriteLine("Put response: {0}", putInfo); Console.WriteLine(); Console.WriteLine("Press enter to exit"); Console.ReadLine(); }
private async void Login(object sender, RoutedEventArgs e) { var ctx = new OAuthConsumerContext { ConsumerKey = _settings.OauthConsumerKey, ConsumerSecret = _settings.OauthConsumerSecret, SignatureMethod = SignatureMethod.HmacSha1 }; var session = new OAuthSession( ctx, "https://www.obsidianportal.com/oauth/request_token", "https://www.obsidianportal.com/oauth/authorize", "https://www.obsidianportal.com/oauth/access_token"); IToken token = session.GetRequestToken(); string authLink = session.GetUserAuthorizationUrlForToken(token, "oob"); Task <IToken> getTokenTask = CallbackAsyncThread.RunAsync( () => { string verifier = null; using (var browser = new IE(authLink) { AutoClose = true }) { while ( !string.Equals( browser.Url, "https://www.obsidianportal.com/oauth/authorize", StringComparison.OrdinalIgnoreCase)) { NameValueCollection queryString = HttpUtility.ParseQueryString(browser.Uri.Query); if (queryString["oauth_verifier"] != null) { verifier = queryString["oauth_verifier"]; break; } Thread.Sleep(500); } if (verifier == null) { Element element = browser.Element("oauth-verifier"); if (!element.Exists) { return(null); } verifier = element.Text; } } return(session.ExchangeRequestTokenForAccessToken(token, verifier)); }, ApartmentState.STA); IToken accessToken; try { accessToken = await getTokenTask; } catch (Exception) { MessageBox.Show(this, "Failed to log in", "Login Failed", MessageBoxButton.OK, MessageBoxImage.Error); return; } _settings.OauthToken = accessToken.Token; _settings.OauthTokenSecret = accessToken.TokenSecret; _settings.Save(); await LoadInformation(); }