// sample flow for Twitter authroize public async static Task <AccessToken> AuthorizeSample(string consumerKey, string consumerSecret) { // create authorizer var authorizer = new OAuthAuthorizer(consumerKey, consumerSecret); // get request token var tokenResponse = await authorizer.GetRequestToken("https://api.twitter.com/oauth/request_token"); var requestToken = tokenResponse.Token; var pinRequestUrl = authorizer.BuildAuthorizeUrl("https://api.twitter.com/oauth/authorize", requestToken); // open browser and get PIN Code Process.Start(pinRequestUrl); // enter pin Console.WriteLine("ENTER PIN"); var pinCode = Console.ReadLine(); // get access token var accessTokenResponse = await authorizer.GetAccessToken("https://api.twitter.com/oauth/access_token", requestToken, pinCode); // save access token. var accessToken = accessTokenResponse.Token; Console.WriteLine("Key:" + accessToken.Key); Console.WriteLine("Secret:" + accessToken.Secret); return(accessToken); }
// sample flow for Twitter authroize public async static Task<AccessToken> AuthorizeSample(string consumerKey, string consumerSecret) { // create authorizer var authorizer = new OAuthAuthorizer(consumerKey, consumerSecret); // get request token var tokenResponse = await authorizer.GetRequestToken("https://api.twitter.com/oauth/request_token"); var requestToken = tokenResponse.Token; var pinRequestUrl = authorizer.BuildAuthorizeUrl("https://api.twitter.com/oauth/authorize", requestToken); // open browser and get PIN Code Process.Start(pinRequestUrl); // enter pin Console.WriteLine("ENTER PIN"); var pinCode = Console.ReadLine(); // get access token var accessTokenResponse = await authorizer.GetAccessToken("https://api.twitter.com/oauth/access_token", requestToken, pinCode); // save access token. var accessToken = accessTokenResponse.Token; Console.WriteLine("Key:" + accessToken.Key); Console.WriteLine("Secret:" + accessToken.Secret); return accessToken; }
public IObservable <HttpClient> Authorize(string pincode) { return(authorizer.GetAccessToken(accessTokenUrl, requestToken, pincode) .ToObservable() .Do(x => Setting.AccessToken = x.Token) .Select(x => OAuthUtility.CreateOAuthClient(key, secret, x.Token))); }
/// <summary> /// GET USER ACCESS TOKEN /// </summary> /// <returns>OAuth1Credentials</returns> public async Task <AccessToken> ExchangeRequestTokenForAccessToken(RequestToken requestToken, string oAuthVerifier) { var authorizer = new OAuthAuthorizer(_consumerKey, _consumerSecret); TokenResponse <AccessToken> accessTokenResponse = await authorizer.GetAccessToken("https://oauth.withings.com/account/access_token", requestToken, oAuthVerifier); return(accessTokenResponse.Token); }
public void VerifyPin() { CurrentAuthenticationStep = AuthenticationStep.AuthorizingUser; Observable.Defer(() => _authorizer.GetAccessToken(AccessTokenEndpoint, _currentRequestToken, Pin).ToObservable()) .Retry(3, TimeSpan.FromSeconds(3)) .Subscribe(r => { var id = long.Parse(r.ExtraData["user_id"].First()); var sn = r.ExtraData["screen_name"].First(); _returnSubject.OnNext(new TwitterAccount(id, sn, r.Token)); this.Messenger.Raise(new WindowActionMessage(WindowAction.Close)); }, ex => { CurrentAuthenticationStep = AuthenticationStep.WaitingPinInput; this.Messenger.Raise(new TaskDialogMessage( new TaskDialogOptions { Title = "アクセス許可取得失敗", MainIcon = VistaTaskDialogIcon.Error, MainInstruction = "アカウントを認証できませんでした。", Content = "PINを確認しもう一度入力するか、最初からやり直してみてください。", CommonButtons = TaskDialogCommonButtons.Close, FooterIcon = VistaTaskDialogIcon.Information, FooterText = "コンピュータの時計が大幅にずれている場合も認証が行えないことがあります。" })); }); }
// sample flow for Hatena authroize public async static Task<AccessToken> AuthorizeSample(string consumerKey, string consumerSecret) { // create authorizer var authorizer = new OAuthAuthorizer(consumerKey, consumerSecret); // get request token var tokenResponse = await authorizer.GetRequestToken( "https://www.hatena.com/oauth/initiate", new[] { new KeyValuePair<string, string>("oauth_callback", "oob") }, new FormUrlEncodedContent(new[] { new KeyValuePair<string, string>("scope", "read_public,write_public,read_private,write_private") })); var requestToken = tokenResponse.Token; var pinRequestUrl = authorizer.BuildAuthorizeUrl("https://www.hatena.ne.jp/oauth/authorize", requestToken); // open browser and get PIN Code Process.Start(pinRequestUrl); // enter pin Console.WriteLine("ENTER PIN"); var pinCode = Console.ReadLine(); // get access token var accessTokenResponse = await authorizer.GetAccessToken("https://www.hatena.com/oauth/token", requestToken, pinCode); // save access token. var accessToken = accessTokenResponse.Token; Console.WriteLine("Key:" + accessToken.Key); Console.WriteLine("Secret:" + accessToken.Secret); return accessToken; }
// sample flow for Hatena authroize public async static Task <AccessToken> AuthorizeSample(string consumerKey, string consumerSecret) { // create authorizer var authorizer = new OAuthAuthorizer(consumerKey, consumerSecret); // get request token var tokenResponse = await authorizer.GetRequestToken( "https://www.hatena.com/oauth/initiate", new[] { new KeyValuePair <string, string>("oauth_callback", "oob") }, new FormUrlEncodedContent(new[] { new KeyValuePair <string, string>("scope", "read_public,write_public,read_private,write_private") })); var requestToken = tokenResponse.Token; var pinRequestUrl = authorizer.BuildAuthorizeUrl("https://www.hatena.ne.jp/oauth/authorize", requestToken); // open browser and get PIN Code Process.Start(pinRequestUrl); // enter pin Console.WriteLine("ENTER PIN"); var pinCode = Console.ReadLine(); // get access token var accessTokenResponse = await authorizer.GetAccessToken("https://www.hatena.com/oauth/token", requestToken, pinCode); // save access token. var accessToken = accessTokenResponse.Token; Console.WriteLine("Key:" + accessToken.Key); Console.WriteLine("Secret:" + accessToken.Secret); return(accessToken); }
// sample flow for Twitter authroize public static async Task<AccessToken> Authorize(string consumerKey, string consumerSecret) { // create authorizer var authorizer = new OAuthAuthorizer(consumerKey, consumerSecret); // get request token TokenResponse<RequestToken> tokenResponse = await authorizer.GetRequestToken( RequestTokenUrl, new[] {new KeyValuePair<string, string>("oauth_callback", "oob")}); RequestToken requestToken = tokenResponse.Token; string pinRequestUrl = authorizer.BuildAuthorizeUrl(AuthorizeTokenUrl, requestToken); // open browser and get PIN Code Process.Start(pinRequestUrl); // enter pin System.Console.WriteLine("ENTER PIN"); string pinCode = System.Console.ReadLine(); // get access token TokenResponse<AccessToken> accessTokenResponse = await authorizer.GetAccessToken(AccessTokenUrl, requestToken, pinCode); // save access token. AccessToken accessToken = accessTokenResponse.Token; return accessToken; }
// sample flow for Twitter authroize public static async Task <AccessToken> Authorize(string consumerKey, string consumerSecret) { // create authorizer var authorizer = new OAuthAuthorizer(consumerKey, consumerSecret); // get request token TokenResponse <RequestToken> tokenResponse = await authorizer.GetRequestToken( RequestTokenUrl, new[] { new KeyValuePair <string, string>("oauth_callback", "oob") }); RequestToken requestToken = tokenResponse.Token; string pinRequestUrl = authorizer.BuildAuthorizeUrl(AuthorizeTokenUrl, requestToken); // open browser and get PIN Code Process.Start(pinRequestUrl); // enter pin System.Console.WriteLine("ENTER PIN"); string pinCode = System.Console.ReadLine(); // get access token TokenResponse <AccessToken> accessTokenResponse = await authorizer.GetAccessToken(AccessTokenUrl, requestToken, pinCode); // save access token. AccessToken accessToken = accessTokenResponse.Token; return(accessToken); }
/// <summary> /// This action is the callback that Evernote will redirect to after /// the call to Authorize above /// </summary> /// <param name="oauth_verifier"></param> /// <returns></returns> public ActionResult ObtainTokenCredentials(string oauth_verifier) { // Use the verifier to get all the user details we need and // store them in EvernoteCredentials if (oauth_verifier != null) { var result = OAuthAuthorizer.GetAccessToken(ConfigurationManager.AppSettings["Evernote.Url"] + "/oauth", SessionHelper.RequestToken as RequestToken, oauth_verifier, null, null).Result; EvernoteCredentials credentials = new EvernoteCredentials(); credentials.AuthToken = result.Token.Key; // Parse the extra data credentials.Shard = Uri.UnescapeDataString(result.ExtraData["edam_shard"].FirstOrDefault()); credentials.UserId = Uri.UnescapeDataString(result.ExtraData["edam_userId"].FirstOrDefault()); var expires = Uri.UnescapeDataString(result.ExtraData["edam_expires"].FirstOrDefault()); var expiresDateTime = new DateTime(1970, 1, 1).AddTicks(long.Parse(expires) * 10000); credentials.Expires = DateTime.SpecifyKind(expiresDateTime, DateTimeKind.Utc); credentials.NotebookUrl = Uri.UnescapeDataString(result.ExtraData["edam_noteStoreUrl"].FirstOrDefault()); credentials.WebApiUrlPrefix = Uri.UnescapeDataString(result.ExtraData["edam_webApiUrlPrefix"].FirstOrDefault()); SessionHelper.EvernoteCredentials = credentials; return Redirect(Url.Action("Authorized")); } else { return Redirect(Url.Action("Unauthorized")); } }
public async Task <AuthCredential> ProcessApprovedAuthCallbackAsync(RequestToken token) { if (token == null) { throw new ArgumentNullException("token", "RequestToken cannot be null"); } if (string.IsNullOrWhiteSpace(token.Token)) { throw new ArgumentNullException("token", "RequestToken.Token must not be null"); } var oauthRequestToken = new AsyncOAuth.RequestToken(token.Token, token.Secret); var authorizer = new OAuthAuthorizer(ConsumerKey, ConsumerSecret); var accessToken = await authorizer.GetAccessToken(Constants.BaseApiUrl + Constants.TemporaryCredentialsAccessTokenUri, oauthRequestToken, token.Verifier); var result = new AuthCredential { AuthToken = accessToken.Token.Key, AuthTokenSecret = accessToken.Token.Secret, UserId = accessToken.ExtraData["encoded_user_id"].FirstOrDefault() }; return(result); }
/// <summary> /// アクセストークン取得 /// </summary> /// <param name="authorizer"></param> /// <param name="requestToken"></param> /// <returns></returns> private static async Task <AccessToken> GetAccessTokenAsync(OAuthAuthorizer authorizer, RequestToken requestToken, string username, string password) { var requestUri = new Uri(authorizer.BuildAuthorizeUrl(AuthorizeBaseUrl, requestToken)); // rkmの取得にrkが必要 var rk = await GetRkAsync(username, password); var handler = new HttpClientHandler() { AllowAutoRedirect = false }; var client = new HttpClient(handler); client.DefaultRequestHeaders.Add("User-Agent", UserAgent); client.DefaultRequestHeaders.Add("Cookie", $"rk={rk}"); // 認証の自動化にrkmが必要 string rks = string.Empty; string rkm = string.Empty; using (var response = await client.GetAsync("http://b.hatena.ne.jp/my.name")) { var json = await response.Content.ReadAsStringAsync(); rks = JObject.Parse(json).Value <string>("rks"); rkm = JObject.Parse(json).Value <string>("rkm"); } if (string.IsNullOrEmpty(rkm)) { throw new HttpRequestException("rkm"); } var param = new FormUrlEncodedContent(new Dictionary <string, string> { { "rkm", rkm }, { "oauth_token", requestToken.Key }, { "name", "%E8%A8%B1%E5%8F%AF%E3%81%99%E3%82%8B" } }); // OAuth認証 using (var response = await client.PostAsync(AuthorizeBaseUrl, param)) { var responseData = response.Headers.Location; var regex = new Regex(@"oauth_verifier=(.+)&?"); var match = regex.Match(responseData.Query); if (match.Success) { var verifier = Uri.UnescapeDataString(match.Groups[1].Value); var accessTokenResponse = await authorizer.GetAccessToken(AccessTokenUrl, requestToken, verifier); return(accessTokenResponse.Token); } else { throw new HttpRequestException("failed to get the access token"); } } }
public async Task AuthorizeAsync() { if (IsAuthorized) { return; } await authorizationLock.WaitAsync(); if (IsAuthorized) { return; } try { var authorizer = new OAuthAuthorizer(consumerKey, consumerSecret); var requestTokenResponse = await authorizer.GetRequestToken(requestTokenUri, requestTokenParameters); var requestToekn = requestTokenResponse.Token; var pinRequestUri = authorizer.BuildAuthorizeUrl(authorizeUri, requestToekn); var pinCode = await retrievePin(pinRequestUri); var accessTokenResponse = await authorizer.GetAccessToken(accessTokenUri, requestToekn, pinCode); accessToken = accessTokenResponse.Token; } finally { authorizationLock.Release(); } }
protected async Task <TumblrCredentials> GetAccessToken(TumblrClientCredentials clientCredentials, string webAuthResultResponseData, string tokenSecret) { string responseData = webAuthResultResponseData.Substring(webAuthResultResponseData.IndexOf("oauth_token", StringComparison.Ordinal)); if (responseData.EndsWith("#_=_")) { responseData = responseData.Substring(0, responseData.Length - 4); } string requestToken = null, oauthVerifier = null; String[] keyValPairs = responseData.Split('&'); foreach (string t in keyValPairs) { String[] splits = t.Split('='); switch (splits[0]) { case "oauth_token": requestToken = splits[1]; break; case "oauth_verifier": oauthVerifier = splits[1]; break; } } var authorizer = new OAuthAuthorizer(clientCredentials); var accessToken = await authorizer.GetAccessToken(AccessTokenUrl, new RequestToken(requestToken, tokenSecret), oauthVerifier).ConfigureAwait(false); return(new TumblrCredentials(accessToken.Token.Key, accessToken.Token.Secret)); }
public void VerifyPin() { CurrentAuthenticationStep = AuthenticationStep.AuthorizingUser; Observable.Defer(() => _authorizer.GetAccessToken(AccessTokenEndpoint, _currentRequestToken, Pin).ToObservable()) .Retry(3, TimeSpan.FromSeconds(3)) .Subscribe(r => { var id = long.Parse(r.ExtraData["user_id"].First()); var sn = r.ExtraData["screen_name"].First(); _returnSubject.OnNext(new TwitterAccount(id, sn, r.Token)); CurrentAuthenticationStep = AuthenticationStep.AuthorizationCompleted; this.Messenger.RaiseSafe(() => new WindowActionMessage(WindowAction.Close)); }, ex => { CurrentAuthenticationStep = AuthenticationStep.WaitingPinInput; this.Messenger.RaiseSafe(() => new TaskDialogMessage(new TaskDialogOptions { Title = AuthorizationWindowResources.OAuthFailedTitle, MainIcon = VistaTaskDialogIcon.Error, MainInstruction = AuthorizationWindowResources.OAuthFailedInst, Content = AuthorizationWindowResources.OAuthFailedContent, CommonButtons = TaskDialogCommonButtons.Close, FooterIcon = VistaTaskDialogIcon.Information, FooterText = AuthorizationWindowResources.OAuthErrorFooter })); }); }
/// <summary> /// アプリケーション認証用の確認コードを使用して、アクセストークンを取得します。 /// </summary> /// <param name="verifier">アプリケーション認証用の確認コード。</param> /// <returns>アクセストークンを返す非同期操作を表す <see cref="Task{TResult}"/> オブジェクト。</returns> /// <exception cref="ArgumentException"><paramref name="verifier"/> が空文字列です。</exception> /// <exception cref="ArgumentNullException"><paramref name="verifier"/> が <see langword="null"/> です。</exception> /// <exception cref="HttpRequestException">認証、もしくは HTTP リクエストに失敗しました。</exception> public async Task <OAuthToken> GetTokenAsync(string verifier) { Validation.NotNullOrEmpty(verifier, nameof(verifier)); var accessTokenResponse = await _authorizer.GetAccessToken(_accessTokenUri, _requestToken, verifier); var accessToken = accessTokenResponse.Token; var hatenaId = accessTokenResponse.ExtraData["url_name"].Single(); return(new OAuthToken(this.ConsumerKey, this.ConsumerSecret, accessToken.Key, accessToken.Secret, hatenaId)); }
public async Task <AccessToken> VerifyUserAsync(string verifier) { ValidateAccessToken(); const string accessUrl = AuthUrl + "/access_token/"; OAuthAuthorizer authorizer = new OAuthAuthorizer(_consumerKey, _consumerSecret); TokenResponse <AccessToken> response = await authorizer.GetAccessToken(accessUrl, new RequestToken(AccessToken.Key, AccessToken.Secret), verifier).ConfigureAwait(false); AccessToken = response.Token; return(AccessToken); }
/// <summary> /// For Desktop authentication. Your code should direct the user to the FitBit website to get /// Their pin, they can then enter it here. /// </summary> /// <param name="pin"></param> /// <param name="token"></param> /// <returns></returns> public async Task<AuthCredential> GetAuthCredentialFromPinAsync(string pin, RequestToken token) { var oauthRequestToken = new AsyncOAuth.RequestToken(token.Token, token.Secret); var authorizer = new OAuthAuthorizer(ConsumerKey, ConsumerSecret); var accessTokenResponse = await authorizer.GetAccessToken(Constants.BaseApiUrl + Constants.TemporaryCredentialsAccessTokenUri, oauthRequestToken, pin); // save access token. var accessToken = accessTokenResponse.Token; return new AuthCredential { AuthToken = accessToken.Key, AuthTokenSecret = accessToken.Secret }; }
// sample flow for Twitter authroize public async static Task <AccessToken> GetAccessToken(string consumerKey, string consumerSecret, string pinCode) { // create authorizer var authorizer = new OAuthAuthorizer(consumerKey, consumerSecret); // get access token var accessTokenResponse = await authorizer.GetAccessToken("https://api.twitter.com/oauth/access_token", requestToken, pinCode); // save access token. var accessToken = accessTokenResponse.Token; return(accessToken); }
// sample flow for Hatena authroize public async static Task <AccessToken> AuthorizeSampleRedirect(string consumerKey, string consumerSecret) { // create authorizer var authorizer = new OAuthAuthorizer(consumerKey, consumerSecret); // get request token var tokenResponse = await authorizer.GetRequestToken( "https://www.hatena.com/oauth/initiate", new[] { new KeyValuePair <string, string>("oauth_callback", "http://dev.clock-up.jp/redirect_to_app.php") }, new FormUrlEncodedContent(new[] { new KeyValuePair <string, string>("scope", "read_public") })); var requestToken = tokenResponse.Token; // // ブラウザ起動 var pinRequestUrl = authorizer.BuildAuthorizeUrl("https://www.hatena.ne.jp/oauth/authorize", requestToken); Process.Start(pinRequestUrl); // 認証が成功すると、 // http://dev.clock-up.jp/redirect_to_app.php?oauth_token=LjjaOIMY8fXTAA%3D%3D&oauth_verifier=77EbWdvM9KWG1Tjct%2FphLI%2Fp // のような形式でモノが来る // query to verifier -> verifier Console.WriteLine("ENTER QUERY PARAMETERS"); var query = Console.ReadLine(); string[] parameters = query.Split('&'); string verifier = ""; foreach (var p in parameters) { if (p.StartsWith("oauth_verifier=")) { verifier = p.Substring("oauth_verifier=".Length); } } var accessTokenResponse = await authorizer.GetAccessToken("https://www.hatena.com/oauth/token", requestToken, verifier); // get access token // var accessTokenResponse = await authorizer.GetAccessToken("https://www.hatena.com/oauth/token", requestToken, pinCode); // save access token. var accessToken = accessTokenResponse.Token; Console.WriteLine("Key:" + accessToken.Key); Console.WriteLine("Secret:" + accessToken.Secret); return(accessToken); }
/// <summary> /// For Desktop authentication. Your code should direct the user to the FitBit website to get /// Their pin, they can then enter it here. /// </summary> /// <param name="pin"></param> /// <param name="token"></param> /// <returns></returns> public async Task <AuthCredential> GetAuthCredentialFromPinAsync(string pin, RequestToken token) { var oauthRequestToken = new AsyncOAuth.RequestToken(token.Token, token.Secret); var authorizer = new OAuthAuthorizer(ConsumerKey, ConsumerSecret); var accessTokenResponse = await authorizer.GetAccessToken(Constants.BaseApiUrl + Constants.TemporaryCredentialsAccessTokenUri, oauthRequestToken, pin); // save access token. var accessToken = accessTokenResponse.Token; return(new AuthCredential { AuthToken = accessToken.Key, AuthTokenSecret = accessToken.Secret }); }
public async Task <string> GetAccessToken(string pinCode) { var retMessage = String.Empty; try { var accessTokenResponse = await oAuthAuthorizer.GetAccessToken("https://www.hatena.com/oauth/token", oAuthRequestToken, pinCode); oAuthAccessToken = accessTokenResponse.Token; } catch (Exception ex) { retMessage = $"GetAccessTokenでエラーが発生しました。【内容】{ex.Message}"; } return(retMessage); }
// sample flow for Hatena authroize public static async Task <AccessToken> Authorize() { m_verifier = ""; var authorizer = new OAuthAuthorizer(HatenaConfig.CONSUMER_KEY, HatenaConfig.CONSUMER_SECRET); // get request token var tokenResponse = await authorizer.GetRequestToken( "https://www.hatena.com/oauth/initiate", new[] { new KeyValuePair <string, string>("oauth_callback", "http://dev.clock-up.jp/redirect_to_app.php") }, new FormUrlEncodedContent(new[] { new KeyValuePair <string, string>("scope", "read_public") })); var requestToken = tokenResponse.Token; // ブラウザ起動 var requestUrl = authorizer.BuildAuthorizeUrl("https://www.hatena.ne.jp/touch/oauth/authorize", requestToken); Device.OpenUri(new Uri(requestUrl)); // 認証が成功すると、 // http://dev.clock-up.jp/redirect_to_app.php?oauth_token=xxxxxx%3D%3D&oauth_verifier=xxxxxxxx%2FphLI%2Fp // のようなページが表示される。結果、アプリに呼び戻される // verifier が来るまで待つ while (true) { if (m_verifier == "CANCEL") { return(null); } if (m_verifier != "") { break; } await Task.Delay(500); } var accessTokenResponse = await authorizer.GetAccessToken("https://www.hatena.com/oauth/token", requestToken, m_verifier); // save access token. var accessToken = accessTokenResponse.Token; Debug.WriteLine("Key:" + accessToken.Key); Debug.WriteLine("Secret:" + accessToken.Secret); return(accessToken); }
// Get AccessToken flow sample // TokenResponse's ExtraData is ILookup. // if twitter, you can take "user_id" and "screen_name". private void GetAccessTokenButton_Click(object sender, RoutedEventArgs e) { var pincode = PinCodeTextBox.Text; var authorizer = new OAuthAuthorizer(ConsumerKey, ConsumerSecret); authorizer.GetAccessToken("http://twitter.com/oauth/access_token", requestToken, pincode) .ObserveOnDispatcher() .Subscribe(res => { BrowserAuthorize.Visibility = System.Windows.Visibility.Collapsed; AuthorizedTextBlock.Text = "Authorized"; UserIdTextBlock.Text = res.ExtraData["user_id"].First(); ScreenNameTextBlock.Text = res.ExtraData["screen_name"].First(); accessToken = res.Token; }, ex => MessageBox.Show(ReadWebException(ex))); }
public void AuthenticatePin() { Enforce.NotNull(_token); int pin; if (!int.TryParse(Pin, out pin)) throw new InvalidOperationException("The PIN must be a number."); var authorizer = new OAuthAuthorizer(AppBootstrapper.ConsumerKey, AppBootstrapper.ConsumerSecret); authorizer.GetAccessToken("https://twitter.com/oauth/access_token", _token, Pin) .DispatcherSubscribe( response => { AppSettings.UserOAuthToken = response.Token.Key; AppSettings.UserOAuthTokenSecret = response.Token.Secret; _eventAggregator.Publish(new AuthenticatedMessage()); }, OnError); }
// Get AccessToken flow sample // TokenResponse's ExtraData is ILookup. // if twitter, you can take "user_id" and "screen_name". private void GetAccessTokenButton_Click(object sender, RoutedEventArgs e) { if (requestToken == null) { MessageBox.Show("at first, get requestToken"); return; } var pincode = PinCodeTextBox.Text; var authorizer = new OAuthAuthorizer(ConsumerKey, ConsumerSecret); authorizer.GetAccessToken("http://twitter.com/oauth/access_token", requestToken, pincode) .ObserveOnDispatcher() .Subscribe(res => { AuthorizedTextBlock.Text = "Authorized"; UserIdTextBlock.Text = res.ExtraData["user_id"].First(); ScreenNameTextBlock.Text = res.ExtraData["screen_name"].First(); accessToken = res.Token; }, ex => MessageBox.Show(ReadWebException(ex))); }
public async Task<AuthCredential> ProcessApprovedAuthCallbackAsync(RequestToken token) { if (token == null) throw new ArgumentNullException("token", "RequestToken cannot be null"); if (string.IsNullOrWhiteSpace(token.Token)) throw new ArgumentNullException("token", "RequestToken.Token must not be null"); var oauthRequestToken = new AsyncOAuth.RequestToken(token.Token, token.Secret); var authorizer = new OAuthAuthorizer(ConsumerKey, ConsumerSecret); var accessToken = await authorizer.GetAccessToken(Constants.BaseApiUrl + Constants.TemporaryCredentialsAccessTokenUri, oauthRequestToken, token.Verifier); var result = new AuthCredential { AuthToken = accessToken.Token.Key, AuthTokenSecret = accessToken.Token.Secret, UserId = accessToken.ExtraData["encoded_user_id"].FirstOrDefault() }; return result; }
public static IObservable<AccessTokenData> GetAccessToken(this TwitterClient client, string consumerKey, string consumerSecret, RequestToken token, string pincode) { var authorizer = new OAuthAuthorizer(consumerKey, consumerSecret); if (client.CurrentNetworkProfile != null) { if (client.CurrentNetworkProfile.Proxy != null) { authorizer.ApplyBeforeRequest += req => req.Proxy = client.CurrentNetworkProfile.Proxy.GetProxy(); } } return Observable .Defer(() => authorizer.GetAccessToken(RestApi.OAuthEndpoints["oauth/access_token"].Url, token, pincode)) .OnErrorRetry(3) .Select(res => new AccessTokenData { Token = res.Token, ScreenName = res.ExtraData["screen_name"].FirstOrDefault(), UserId = Convert.ToInt64(res.ExtraData["user_id"].FirstOrDefault()), }); }
//public async Task<AuthCredential> ProcessApprovedAuthCallbackAsync(RequestToken token) //{ // if (token == null) // throw new ArgumentNullException("token", "RequestToken cannot be null"); // if (string.IsNullOrWhiteSpace(token.Token)) // throw new ArgumentNullException("token", "RequestToken.Token must not be null"); // var oauthRequestToken = new AsyncOAuth.RequestToken(token.Token, token.Secret); // var authorizer = new OAuthAuthorizer(ConsumerKey, ConsumerSecret); // var accessToken = await authorizer.GetAccessToken(Constants.BaseApiUrl + Constants.TemporaryCredentialsAccessTokenUri, oauthRequestToken, token.Verifier); // var result = new AuthCredential // { // AuthToken = accessToken.Token.Key, // AuthTokenSecret = accessToken.Token.Secret, // UserId = accessToken.ExtraData["encoded_user_id"].FirstOrDefault() // }; // return result; //} public async Task <AccessToken> AccessTokenFlow(RequestToken requestToken, string oAuthVerifier) { //passing in the MVC where AccessTokenFlow=string oatuhtokens //seting the authorizer varable with consumerKey/Secret as in Withings. Will become variable for later injection //grab value in URL to place in varables var authorizer = new OAuthAuthorizer(ConsumerKey, ConsumerSecret); //send them out as access_tokens to get access granted by Withings var accessTokenResponse = await authorizer.GetAccessToken(Constants.BaseApiUrl + Constants.TemporaryCredentialsAccessTokenUri, requestToken, oAuthVerifier); var accessToken = accessTokenResponse.Token; //var result = new AuthCredential //{ // AuthToken = accessToken.Token.Key, // AuthTokenSecret = accessToken.Token.Secret, // UserId = accessToken.ExtraData["encoded_user_id"].FirstOrDefault() //}; return(accessToken); }
public void AuthenticatePin() { Enforce.NotNull(_token); int pin; if (!int.TryParse(Pin, out pin)) { throw new InvalidOperationException("The PIN must be a number."); } var authorizer = new OAuthAuthorizer(AppBootstrapper.ConsumerKey, AppBootstrapper.ConsumerSecret); authorizer.GetAccessToken("https://twitter.com/oauth/access_token", _token, Pin) .DispatcherSubscribe( response => { AppSettings.UserOAuthToken = response.Token.Key; AppSettings.UserOAuthTokenSecret = response.Token.Secret; _eventAggregator.Publish(new AuthenticatedMessage()); }, OnError); }
/**********************************************************************************/ public async Task <bool> Authorize() { Logger.Trace("Authorizing"); if (string.IsNullOrEmpty(Login) || string.IsNullOrEmpty(Password)) { StatusMessage = "Nothing"; LastErrorMessage = "Password or login are no set."; return(false); } IsAuthorized = false; var client = new HttpClient(); try { var authorizer = new OAuthAuthorizer(ConsumerKey, ConsumerSecret); var tokenResponse = await authorizer.GetRequestToken("http://api.zenmoney.ru/oauth/request_token"); var requestToken = tokenResponse.Token; var pinRequestUrl = authorizer.BuildAuthorizeUrl("http://api.zenmoney.ru/access/", requestToken) + "&mobile"; var authPage = await client.GetStringAsync(pinRequestUrl); var query = new FormUrlEncodedContent(new Collection <KeyValuePair <string, string> >() { new KeyValuePair <string, string>("oauth_callback", "http://grtisenko.biz/zenmoney"), new KeyValuePair <string, string>("login", Login), new KeyValuePair <string, string>("password", Password) }); var request = await client.PostAsync(pinRequestUrl, query); if (request.StatusCode == HttpStatusCode.OK) { var responseStr = await request.Content.ReadAsStringAsync(); //LastErrorMessage = responseStr; throw new UnauthorizedAccessException("Json content: " + responseStr); } var args = HttpUtil.ParseQueryString(request.RequestMessage.RequestUri.ToString()); var verificationCode = Uri.UnescapeDataString(args["oauth_verifier"]); var accessTokenResponse = await authorizer.GetAccessToken("http://api.zenmoney.ru/oauth/access_token", requestToken, verificationCode); _accessToken = accessTokenResponse.Token; IsAuthorized = true; } catch (HttpRequestException httpEx) { LastErrorMessage = "Ошибка подключения к серверу: " + httpEx.Message; Logger.LogException <ZenmoneyClient>(httpEx, "Authorization faild, due http request exception"); } catch (Exception ex) { LastErrorMessage = "Неправильное имя пользователя или пароль"; Logger.LogException <ZenmoneyClient>(ex, "Authorization faild"); } finally { client.Dispose(); } return(IsAuthorized); }
static void Main(string[] args) { ServicePointManager.Expect100Continue = false; // set your consumerkey/secret const string ConsumerKey = ""; const string ConsumerSecret = ""; AccessToken accessToken = null; string userId, screenName; // get accesstoken flow // create authorizer and call "GetRequestToken" ,"BuildAuthorizeUrl", "GetAccessToken" // TokenResponse's ExtraData is ILookup. // if twitter, you can take "user_id" and "screen_name". // Run is sync. Subscribe is async. var authorizer = new OAuthAuthorizer(ConsumerKey, ConsumerSecret); authorizer.GetRequestToken("http://twitter.com/oauth/request_token") .Do(r => { Console.WriteLine("Check Browser and input PinCode"); Process.Start(authorizer.BuildAuthorizeUrl("http://twitter.com/oauth/authorize", r.Token)); // open browser }) .Select(r => new { RequestToken = r.Token, PinCode = Console.ReadLine() }) .SelectMany(a => authorizer.GetAccessToken("http://twitter.com/oauth/access_token", a.RequestToken, a.PinCode)) .ForEach(r => { userId = r.ExtraData["user_id"].First(); screenName = r.ExtraData["screen_name"].First(); accessToken = r.Token; }); // get accesstoken flow by xAuth //new OAuthAuthorizer(ConsumerKey, ConsumerSecret) // .GetAccessToken("https://api.twitter.com/oauth/access_token", "username", "password") // .Run(r => accessToken = r.Token); // get timeline flow // set parameters can use Collection Initializer // if you want to set webrequest parameters then use ApplyBeforeRequest var client = new OAuthClient(ConsumerKey, ConsumerSecret, accessToken) { Url = "http://api.twitter.com/1/statuses/home_timeline.xml", Parameters = { { "count", 20 }, { "page", 1 } }, ApplyBeforeRequest = req => { req.Timeout = 1000; req.UserAgent = "ReactiveOAuth"; } }; client.GetResponseText() .Select(s => XElement.Parse(s)) .ForEach(x => Console.WriteLine(x.ToString())); // post flow // if post then set MethodType = MethodType.Post //new OAuthClient(ConsumerKey, ConsumerSecret, accessToken) //{ // MethodType = MethodType.Post, // Url = "http://api.twitter.com/1/statuses/update.xml", // Parameters = { { "status", "PostTest from ReactiveOAuth" } } //}.GetResponseText() // .Select(s => XElement.Parse(s)) // .Run(x => Console.WriteLine("Post Success:" + x.Element("text"))); // StreamingAPI sample // if you use streaming api, recommend call GetResponseLines. // see details -> WPF Sample. //new OAuthClient(ConsumerKey, ConsumerSecret, accessToken) //{ // Url = "https://userstream.twitter.com/2/user.json" //}.GetResponseLines() //.Run(s => Console.WriteLine(s)); }
private void WbLoginOnNavigating(object sender, NavigatingEventArgs e) { if (e.Uri.ToString().StartsWith("http://localhost/myapp")) { var splitted = e.Uri.ToString().Split('&').Select(s => s.Split('=')).ToDictionary(s => s.First(), s => s.Last()); if (!splitted.ContainsKey("oauth_verifier")) { ((Storyboard)Resources["HidePopupAnimation"]).Begin(); return; } string verifier = splitted["oauth_verifier"]; var authorizer = new OAuthAuthorizer(ConsumerKey, ConsumerSecret); authorizer.GetAccessToken(BaseUrl + "/oauth", requestToken, verifier) .ObserveOnDispatcher() .Subscribe(res => { try { AuthenticationResult result = new AuthenticationResult(); result.AuthenticationToken = Uri.UnescapeDataString(res.Token.Key); result.NoteStoreUrl = Uri.UnescapeDataString(res.ExtraData["edam_noteStoreUrl"].First()); result.Expiration = long.Parse(res.ExtraData["edam_expires"].First()); result.WebApiUrlPrefix = Uri.UnescapeDataString(res.ExtraData["edam_webApiUrlPrefix"].First()); result.User = new User(); result.User.Id = int.Parse(res.ExtraData["edam_userId"].First()); MessageBox.Show("Login Success. Token is " + result.AuthenticationToken); } catch (KeyNotFoundException) { } finally { ((Storyboard)Resources["HidePopupAnimation"]).Begin(); } }); e.Cancel = true; wbLogin.Visibility = Visibility.Collapsed; } }
/// <summary> /// Get linkedin access token from uri /// </summary> private void handleLinkedInAuthorization(Uri uri) { var results = GeneralUtils.GetQueryParameters(uri); // If no verifier or query, we return to page if (results == null || !results.ContainsKey("oauth_verifier")) { liFailedAndGoBack(); return; } // Handle no linkedin request token if (li_requestToken == null) { liFailedAndGoBack(); return; } // clean up StorageUtils.RemoveData(Constants.LI_TOKEN); // Get access token string verifyPin = results["oauth_verifier"]; var authorizer = new OAuthAuthorizer(SWLinkedInSettings.ConsumerKey, SWLinkedInSettings.ConsumerSecret); authorizer.GetAccessToken(SWLinkedInSettings.AccessTokenUri, this.li_requestToken, verifyPin) .ObserveOnDispatcher() .Subscribe(res => { if (res == null) { liFailedAndGoBack(); return; } SWLinkedInSettings.SetAccessToken(res.Token); // Notify UI that linkedin is now connected PhoneApplicationService.Current.State[Constants.AUTH_NOTIFICATION] = "LinkedIn is now enabled!"; goBack(); }); }
public async Task <ActionResult> AccessTokenFlow() { //seting the authorizer varable with consumerKey/Secret as in Withings. Will become variable for later injection //grab value in URL to place in varables var authorizer = new OAuthAuthorizer(consumerKey, consumerSecret); var accessToken = Request.QueryString["oauth_token"].ToString(); var oAuthVerifier = Request.QueryString["oauth_verifier"].ToString(); List <KeyValuePair <string, string> > parameters = new List <KeyValuePair <string, string> >(); parameters.Add(new KeyValuePair <string, string>("oauth_token", accessToken)); // List<KeyValuePair<string, string>> parameters = new List<KeyValuePair<string, string>>(); // parameters.Add(new KeyValuePair<string, string>("oauth_verifier", oAuthVerifier)); var requestToken = Session["requestToken"] as RequestToken; //send them out as access_tokens to get access granted by Withings var accessTokenResponse = await authorizer.GetAccessToken("https://oauth.withings.com/account/access_token", requestToken, oAuthVerifier); var accessTokens = accessTokenResponse.Token; string userId = Request.QueryString["userid"]; //todo: Find out how to assign the real user id from OAuth call var client = OAuthUtility.CreateOAuthClient(consumerKey, consumerSecret, accessTokens); //string withingsDateApiUrl = "&date="; //string withingsStartDateApiUrl = "&startdateymd="; //string withingsEndDateApiUrl = "&enddateymd="; //DateTime date = DateTime.Now; //string dateFormat = date.ToString("yyyy-MM-dd"); //string startDateFormat = "2017-03-10"; //string endDateFormat = "2017-03-21"; // string dateFormat = "2017-03-13"; //string oauthenticator = "&"+consumerSecret+"&"+accessToken; var oAuth_params = OAuthUtility.BuildBasicParameters(consumerKey, consumerSecret, "https://wbsapi.withings.net", HttpMethod.Get, accessTokens) .Where(p => p.Key != "oauth_signature") .OrderBy(p => p.Key); string requestUri = $"https://wbsapi.withings.net/measure?action=getmeas&userid={userId}&"; requestUri += string.Join("&", oAuth_params.Select(kvp => kvp.Key + "=" + kvp.Value)); var signature = OAuthUtility.BuildBasicParameters(consumerKey, consumerSecret, requestUri, HttpMethod.Get, accessTokens) .First(p => p.Key == "oauth_signature").Value; string json = await client.GetStringAsync(requestUri + "&oauth_signature=" + signature); var o = JObject.Parse(json); int updateTime = (int)o["body"]["updatetime"]; ViewBag.measureGroups = o["body"]["measuregrps"].Select(no => new { GroupId = no["grpid"], Attrib = no["attrib"] }); ViewBag.serializedResult = "JsonData"; return(View("AccessTokenFlow")); }