Esempio n. 1
0
        /// <summary>
        /// Make a request to the provider for a access token.
        /// </summary>
        /// <param name="requestToken">The request token</param>
        /// <returns>The access token</returns>
        public IToken GetAccessToken(IToken requestToken)
        {
            if (requestToken == null)
            {
                throw new ArgumentNullException("requestToken");
            }

            // Create a new session
            CreateSession();

            // Make a request to the provider to get a access token
            return(_oAuthSession.ExchangeRequestTokenForAccessToken(requestToken));
        }
Esempio n. 2
0
        //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 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();
        }
Esempio n. 4
0
        // 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);
        }
Esempio n. 5
0
        public AccessToken GetAccessToken(string verificationKey)
        {
            if (!_consumerToken.IsSet())
            {
                throw new OAuthGetAccessTokenException("Consumer token and secret are required.");
            }
            if (!_requestToken.IsSet())
            {
                throw new OAuthGetAccessTokenException("Request token not set, you need to try getting the verification key again.");
            }
            if (_requestToken.Expired)
            {
                throw new OAuthGetAccessTokenException("Request token has expired, you need to try getting the verification key again.");
            }
            if (string.IsNullOrWhiteSpace(verificationKey))
            {
                throw new OAuthGetAccessTokenException("Verification key is required you need to get it from etrade first.");
            }
            if (_session == null)
            {
                throw new OAuthGetRequestTokenException("OAuthSession is not estabblished");
            }

            _accessToken = _session.ExchangeRequestTokenForAccessToken(_requestToken, verificationKey).ToAccessToken();

            if (_accessToken == null)
            {
                throw new OAuthGetAccessTokenException("Unable to get Request token.");
            }

            return(_accessToken);
        }
        /// <summary>
        /// <para>This is the second and final step in the authorisation process. It uses the verification code (retrieved in public string GetVerificationCode()).
        /// </para><para>It exchanges the verification code for an access token.</para>
        /// <para>Once this step has been performed the user will be enabled to perform authenticated requests.</para>
        /// </summary>
        /// <param name="code">The verification code.</param>
        public void AuthenticateWithVerificationCode(string code)
        {
            if (string.IsNullOrEmpty(code))
            {
                throw new NoVerificationCodeException();
            }

            code = code.Trim();

            var consumerContext = new OAuthConsumerContext
            {
                ConsumerKey                 = ConsumerKey,
                ConsumerSecret              = ConsumerSecret,
                SignatureMethod             = SignatureMethod.HmacSha1,
                UseHeaderForOAuthParameters = true
            };

            var session = new OAuthSession(
                consumerContext,
                RequestTokenUrl + ScopeOfRequest,
                AuthorizeUrl,
                AccessUrl);

            AccessToken = session.ExchangeRequestTokenForAccessToken(RequestToken, code);
        }
Esempio n. 7
0
        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();
        }
Esempio n. 8
0
        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();
        }
Esempio n. 9
0
        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();
        }
Esempio n. 10
0
        public void ExchangeRequestTokenForAccessToken(String verifier, out HMEntities.UserProfiles.User currentUser)
        {
            currentUser = new HMEntities.UserProfiles.User();

            OAuthSession oauthSession = GetOAuthSession(Chpp.ConsumerKey, Chpp.ConsumerSecret);
            IToken       accessToken  = oauthSession.ExchangeRequestTokenForAccessToken(requestToken, verifier);

            currentUser.accessToken       = accessToken.Token;
            currentUser.accessTokenSecret = accessToken.TokenSecret;
        }
Esempio n. 11
0
        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);
    }
Esempio n. 13
0
        public IToken GetAccessTokenAuto(OAuthSession session)
        {
            IToken requestToken = session.GetRequestToken();

            string authorizationLink = GetUserAuthorizationUrlForToken(requestToken, session.ConsumerContext.ConsumerKey);

            string pin = BrowserAuth.GetPin(USERNAME, PASSWORD, LOGON_URL, authorizationLink);

            IToken accessToken = session.ExchangeRequestTokenForAccessToken(requestToken, pin.ToUpper());

            return(accessToken);
        }
Esempio n. 14
0
        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();
        }
Esempio n. 15
0
        public ActionResult Callback(string oauth_token, string oauth_token_secret, string oauth_verifier)
        {
            OAuthSession session = BuildSession();

            var requestToken = new TokenBase {
                TokenSecret = oauth_token_secret, Token = oauth_token
            };

            IToken accessToken = session.ExchangeRequestTokenForAccessToken(requestToken, "GET", oauth_verifier);

            lastAccessToken = accessToken;

            return(View(accessToken));
        }
        public Stocks.OAuthToken GetAccessToken(string verificationKey)
        {
            if (!_consumerToken.IsSet())
            {
                throw new OAuthGetAccessTokenException("Consumer token and secret are required.");
            }
            if (!_requestToken.IsSet())
            {
                throw new OAuthGetAccessTokenException("Request token not set, you need to try getting the verification key again.");
            }
            if (_requestToken.Expired)
            {
                throw new OAuthGetAccessTokenException("Request token has expired, you need to try getting the verification key again.");
            }
            if (string.IsNullOrWhiteSpace(verificationKey))
            {
                throw new OAuthGetAccessTokenException("Verification key is required you need to get it from etrade first.");
            }
            if (_session == null)
            {
                throw new OAuthGetRequestTokenException("OAuthSession is not estabblished");
            }

            try
            {
                lock (_locker)
                {
                    _accessToken = _session.ExchangeRequestTokenForAccessToken(_requestToken, verificationKey).ToAccessToken();
                }

                return(new Stocks.OAuthToken
                {
                    Token = _accessToken.Token,
                    Secret = _accessToken.TokenSecret
                });
            }
            catch (OAuthException ex)
            {
                var exception = new OAuthGetAccessTokenException(ex.Message, ex);

                MapProblemReport(ex, exception);

                throw exception;
            }
        }
Esempio n. 17
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Request.QueryString.HasKeys())
            {
                var oauthVerifyer = Request.QueryString["oauth_verifier"].ToString();

                RestProfile profile = RestProfile.GetRestProfile();

                profile.RealmId = Request.QueryString["realmId"].ToString();

                switch (Request.QueryString["dataSource"].ToString().ToLower())
                {
                case "qbo": profile.DataSource = (int)IntuitServicesType.QBO; break;

                case "qbd": profile.DataSource = (int)IntuitServicesType.QBD; break;
                }

                OAuthConsumerContext consumerContext = new OAuthConsumerContext
                {
                    ConsumerKey     = ConfigurationManager.AppSettings["consumerKey"].ToString(),
                    ConsumerSecret  = ConfigurationManager.AppSettings["consumerSecret"].ToString(),
                    SignatureMethod = SignatureMethod.HmacSha1
                };

                IOAuthSession clientSession = new OAuthSession(consumerContext,
                                                               Constants.OauthEndPoints.IdFedOAuthBaseUrl + Constants.OauthEndPoints.UrlRequestToken,
                                                               Constants.OauthEndPoints.IdFedOAuthBaseUrl,
                                                               Constants.OauthEndPoints.IdFedOAuthBaseUrl + Constants.OauthEndPoints.UrlAccessToken);

                try
                {
                    IToken accessToken = clientSession.ExchangeRequestTokenForAccessToken((IToken)Session["requestToken"], oauthVerifyer);
                    profile.OAuthAccessToken       = accessToken.Token;
                    profile.OAuthAccessTokenSecret = accessToken.TokenSecret;
                    profile.Save();
                }
                catch
                {
                }
            }
        }
Esempio n. 18
0
        public string CallBack()
        {
            if (!this.Request.QueryString.HasKeys())
            {
                return("none");
            }

            var quickBooksAuthenticatedUserCredentials = new QuickBooksOnlineAuthenticatedUserCredentials("", "", "");

            var oauthVerifyer = this.Request.QueryString["oauth_verifier"].ToString();

            quickBooksAuthenticatedUserCredentials.RealmId = this.Request.QueryString["realmId"].ToString();

            var dataSourceStr = this.Request.QueryString["dataSource"].ToString();
            var qbDataSource  = QuickBooksOnlineNonAuthenticatedUserCredentials.ParseQBDataSource(dataSourceStr);

            var consumerContext = new OAuthConsumerContext
            {
                ConsumerKey     = _quickBooksNonAuthenticatedUserCredentials.ConsumerKey,
                ConsumerSecret  = _quickBooksNonAuthenticatedUserCredentials.ConsumerSecret,
                SignatureMethod = SignatureMethod.HmacSha1
            };

            IOAuthSession clientSession = new OAuthSession(consumerContext,
                                                           _quickBooksNonAuthenticatedUserCredentials.GetRequestTokenUrl,
                                                           _quickBooksNonAuthenticatedUserCredentials.OauthEndPoint,
                                                           _quickBooksNonAuthenticatedUserCredentials.GetAccessTokenUrl);

            try
            {
                var requestToken = ( IToken )System.Web.HttpContext.Current.Session["requestToken"];
                var accessToken  = clientSession.ExchangeRequestTokenForAccessToken(requestToken, oauthVerifyer);
                quickBooksAuthenticatedUserCredentials.OAuthAccessToken       = accessToken.Token;
                quickBooksAuthenticatedUserCredentials.OAuthAccessTokenSecret = accessToken.TokenSecret;
            }
            catch
            {
            }
            return("Success." + string.Format("AccessToken: {0}, AccessTokenSecret: {1}, RealmId: {2}", quickBooksAuthenticatedUserCredentials.OAuthAccessToken, quickBooksAuthenticatedUserCredentials.OAuthAccessTokenSecret, quickBooksAuthenticatedUserCredentials.RealmId));
        }
Esempio n. 19
0
        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);
        }
        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();
        }
        /// <summary>
        /// <see cref="IBaseOAuthService{T}.ExchangeRequestTokenForAccessToken(T, string)"/>
        /// </summary>
        public IToken ExchangeRequestTokenForAccessToken(IToken requestToken, string verificationCode)
        {
            IToken ret = _session.ExchangeRequestTokenForAccessToken(requestToken, "POST", verificationCode);

            return(ret);
        }
Esempio n. 22
0
        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));
                }
            }
        }
Esempio n. 23
0
        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));
                }
            }
        }
Esempio n. 24
0
 public string[] Authorize(string PIN)
 {
     _oAuthSession.AccessToken = _oAuthSession.ExchangeRequestTokenForAccessToken(_requestToken, PIN);
     return(new [] { _oAuthSession.AccessToken.Token, _oAuthSession.AccessToken.TokenSecret });
 }
Esempio n. 25
0
        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();
        }