public AuthenticationResult GetUserData(ProviderConfigurationRecord clientConfiguration, AuthenticationResult previousAuthResult, string userAccessToken) { string id = previousAuthResult.ProviderUserId; string name = previousAuthResult.UserName; return(new AuthenticationResult(true, ProviderName, id, name, previousAuthResult.ExtraData)); }
public AuthenticationResult GetUserData(ProviderConfigurationRecord clientConfiguration, AuthenticationResult previousAuthResult, string token, string userAccessSecret, string returnUrl) { var client = Build(clientConfiguration) as LinkedInOAuth2Client; string userAccessToken = client.GetAccessToken(new Uri(returnUrl), token); return(GetUserData(clientConfiguration, previousAuthResult, userAccessToken)); }
public IAuthenticationClient Build(ProviderConfigurationRecord providerConfigurationRecord) { string ClientId = providerConfigurationRecord.ProviderIdKey; string ClientSecret = providerConfigurationRecord.ProviderSecret; var client = new PinterestOAuth2Client(ClientId, ClientSecret); return(client); }
public AuthenticationResult GetUserData(ProviderConfigurationRecord clientConfiguration, AuthenticationResult previousAuthResult, string token, string userAccessSecret, string returnUrl) { var client = Build(clientConfiguration) as GoogleOAuth2Client; //Logger.Error("Inizio chiamata Google"); string userAccessToken = client.GetAccessToken(new Uri(returnUrl), token); //Logger.Error("access token: {0}", userAccessToken); return(GetUserData(clientConfiguration, previousAuthResult, userAccessToken)); }
public IAuthenticationClient Build(ProviderConfigurationRecord providerConfigurationRecord) { if (string.IsNullOrWhiteSpace(providerConfigurationRecord.ProviderIdentifier)) { throw new Exception("Client Identifier must be known if Provider is unknown."); } return(new OpenIdClient(_providerName, Identifier.Parse(providerConfigurationRecord.ProviderIdentifier))); }
public AuthenticationResult GetUserData(ProviderConfigurationRecord clientConfiguration, AuthenticationResult previousAuthResult, string userAccessToken) { var userData = (Build(clientConfiguration) as PinterestOAuth2Client).GetUserDataDictionary(userAccessToken); userData["accesstoken"] = userAccessToken; string id = userData["id"]; string name = userData["first_name"] + userData["last_name"]; return(new AuthenticationResult(true, this.ProviderName, id, name, userData)); }
public AuthenticationResult GetUserData(ProviderConfigurationRecord clientConfiguration, AuthenticationResult previousAuthResult, string userAccessToken) { string secret = ""; if (previousAuthResult.ExtraData.ContainsKey("secret")) { secret = previousAuthResult.ExtraData["secret"]; } return(GetUserData(clientConfiguration, previousAuthResult, userAccessToken, secret, "")); }
public static void ToViewModel(this ProviderConfigurationRecord record, ProviderConfigurationViewModel model) { model.Id = record.Id; model.DisplayName = record.DisplayName; model.ProviderIdentifier = record.ProviderIdentifier; model.ProviderIdKey = record.ProviderIdKey; model.ProviderName = record.ProviderName; model.ProviderSecret = record.ProviderSecret; model.UserIdentifier = record.UserIdentifier; model.IsEnabled = record.IsEnabled; }
public AuthenticationResult GetUserData(ProviderConfigurationRecord clientConfiguration, AuthenticationResult previosAuthResult, string userAccessToken) { var userData = (Build(clientConfiguration) as GoogleOAuth2Client).GetUserDataDictionary(userAccessToken); //Logger.Error("user data count: {0}", userData.Count); userData["accesstoken"] = userAccessToken; string id = userData["id"]; string name = userData["email"]; userData["name"] = userData["email"]; return(new AuthenticationResult(true, this.ProviderName, id, name, userData)); }
public AuthenticationResult GetUserData(ProviderConfigurationRecord clientConfiguration, AuthenticationResult previousAuthResult, string userAccessToken) { var serializer = new DataContractJsonSerializer(typeof(FacebookGraphData)); FacebookGraphData graphData; var request = WebRequest.Create( "https://graph.facebook.com/me?fields=id,email,birthday,first_name,last_name,name,locale,link,gender,timezone,updated_time,verified&access_token=" + userAccessToken); try { using (var response = request.GetResponse()) { using (var responseStream = response.GetResponseStream()) { graphData = (FacebookGraphData)serializer.ReadObject(responseStream); } } } catch { return(AuthenticationResult.Failed); } // this dictionary must contains var userData = new Dictionary <string, string>(); userData["id"] = graphData.Id; userData["username"] = graphData.Email; userData["email"] = graphData.Email; userData["name"] = graphData.Name; userData["link"] = graphData.Link == null ? null : graphData.Link.AbsoluteUri; userData["gender"] = graphData.Gender; userData["birthday"] = graphData.Birthday; if (userData == null) { return(AuthenticationResult.Failed); } string id = userData["id"]; string name; // Some oAuth providers do not return value for the 'username' attribute. // In that case, try the 'name' attribute. If it's still unavailable, fall back to 'id' if (!userData.TryGetValue("username", out name) && !userData.TryGetValue("name", out name)) { name = id; } // add the access token to the user data dictionary just in case page developers want to use it userData["accesstoken"] = userAccessToken; return(new AuthenticationResult( isSuccessful: true, provider: this.ProviderName, providerUserId: id, userName: name, extraData: userData)); }
public static void ToRecord(this ProviderConfigurationViewModel model, ProviderConfigurationRecord record) { if (record == null) { return; } record.DisplayName = model.DisplayName; record.ProviderIdentifier = model.ProviderIdentifier; record.ProviderIdKey = model.ProviderIdKey; record.ProviderName = model.ProviderName; record.ProviderSecret = model.ProviderSecret; record.UserIdentifier = model.UserIdentifier; record.IsEnabled = model.IsEnabled; }
public int Create(ProviderConfigurationCreateParams parameters) { var provider = new ProviderConfigurationRecord { DisplayName = parameters.DisplayName, ProviderName = parameters.ProviderName, ProviderIdentifier = parameters.ProviderIdentifier, UserIdentifier = parameters.UserIdentifier, ProviderIdKey = parameters.ProviderIdKey, ProviderSecret = parameters.ProviderSecret, IsEnabled = 1 }; _repository.Create(provider); syncRepositoryStatic(); return(provider.Id); }
public AuthenticationResult GetUserData(ProviderConfigurationRecord clientConfiguration, AuthenticationResult previousAuthResult, string userAccessToken) { Dictionary <string, string> userData = new Dictionary <string, string>(); string uri = "https://apis.live.net/v5.0/me?access_token=" + userAccessToken; var webRequest = (HttpWebRequest)WebRequest.Create(uri); using (var webResponse = webRequest.GetResponse()) { using (var stream = webResponse.GetResponseStream()) { if (stream == null) { return(null); } using (var textReader = new StreamReader(stream)) { var json = textReader.ReadToEnd(); var valori = JObject.Parse(json); var data = valori.Root; // .SelectToken("data"); userData.Add("id", data.Value <string>("id")); userData.Add("name", data.Value <string>("name")); userData.Add("first_name", data.Value <string>("first_name")); userData.Add("last_name", data.Value <string>("last_name")); userData.Add("gender", data.Value <string>("gender")); userData.Add("locale", data.Value <string>("locale")); userData.Add("updated_time", data.Value <string>("updated_time")); var emails = valori.SelectToken("emails"); userData.Add("email", emails.Value <string>("preferred")); } } } string id = userData["id"]; string name = userData["name"]; // add the access token to the user data dictionary just in case page developers want to use it userData["accesstoken"] = userAccessToken; return(new AuthenticationResult(true, ProviderName, id, name, userData)); }
protected override DriverResult Display(TwitterPostPart part, string displayType, dynamic shapeHelper) { //Determine if we're on an admin page bool isAdmin = AdminFilter.IsApplied(_orchardServices.WorkContext.HttpContext.Request.RequestContext); if (isAdmin) { if ((displayType == "Detail") || (displayType == "Summary")) { ProviderConfigurationRecord pcr = _providerConfigurationService.Get("Twitter"); TwitterOgVM vm = new TwitterOgVM(); if (pcr != null) { vm.Site = pcr.UserIdentifier; } TwitterPostPartSettingVM setting = part.Settings.GetModel <TwitterPostPartSettingVM>(); var tokens = new Dictionary <string, object> { { "Content", part.ContentItem } }; if (!string.IsNullOrEmpty(setting.Description)) { vm.Description = _tokenizer.Replace(setting.Description, tokens); } else { vm.Description = part.TwitterDescription; } if (!string.IsNullOrEmpty(setting.Image)) { string ids = _tokenizer.Replace(setting.Image, tokens); int idimage; Int32.TryParse(ids.Replace("{", "").Replace("}", "").Split(',')[0], out idimage);; if (idimage > 0) { // _orchardServices.ContentManager.Get(id); // vm.Image = Url.ItemDisplayUrl(_orchardServices.ContentManager.Get(id)); var urlHelper = new UrlHelper(_orchardServices.WorkContext.HttpContext.Request.RequestContext); // vm.Image = urlHelper.ItemDisplayUrl(_orchardServices.ContentManager.Get(id));// get current display link // Fvm.Link = urlHelper.MakeAbsolute(urlHelper.ItemDisplayUrl(Twitterpart));// get current display link var ContentImage = _orchardServices.ContentManager.Get(idimage, VersionOptions.Published); // var pathdocument = Path.Combine(ContentImage.As<MediaPart>().FolderPath, ContentImage.As<MediaPart>().FileName); // part.TwitterPicture = pathdocument;// vm.Image = urlHelper.MakeAbsolute(ContentImage.As <MediaPart>().MediaUrl); // .ResizeMediaUrl(Width: previewWidth, Height: previewHeight, Mode: "crop", Alignment: "middlecenter", Path: Model.MediaData.MediaUrl)'); } else { vm.Image = ""; } } else { vm.Image = part.TwitterPicture; } if (!string.IsNullOrEmpty(setting.Title)) { vm.Title = _tokenizer.Replace(setting.Title, tokens); } else { vm.Title = part.TwitterTitle; } return(ContentShape("Parts_TwitterPost_Detail", () => shapeHelper.Parts_TwitterPost_Detail(Twitter: vm, SendOnNextPublish: part.SendOnNextPublish, TwitterMessageSent: part.TwitterMessageSent))); } else { return(null); } } else { return(null); } }
public AuthenticationResult GetUserData(ProviderConfigurationRecord clientConfiguration, AuthenticationResult previousAuthResult, string token, string userAccessSecret, string returnUrl) { return(GetUserData(clientConfiguration, previousAuthResult, token)); }
private static IAuthenticationClient CreateOpenIdClient(ProviderConfigurationRecord clientConfiguration) { return(new CustomOpenIdAuthenticationClient(clientConfiguration.ProviderName).Build(clientConfiguration)); }
public IAuthenticationClient Build(ProviderConfigurationRecord providerConfigurationRecord) { return(new YahooOpenIdClient()); }
public AuthenticationResult GetUserData(ProviderConfigurationRecord clientConfiguration, AuthenticationResult previousAuthResult, string token, string userAccessSecret, string returnUrl) { var userAccessToken = token; if (String.IsNullOrWhiteSpace(userAccessSecret)) { if (previousAuthResult.ExtraData.ContainsKey("accesstoken") == false) { previousAuthResult.ExtraData.Add("accesstoken", userAccessToken); } return(new AuthenticationResult(true, this.ProviderName, previousAuthResult.ProviderUserId, previousAuthResult.UserName, previousAuthResult.ExtraData)); } var twitterUserSerializer = new DataContractJsonSerializer(typeof(TwitterUserData)); TwitterUserData twitterUserData; // recupero lo User_Name e la mail relativi al token var accountSettingsRequest = PrepareAuthorizedRequestGet(userAccessToken, userAccessSecret, clientConfiguration.ProviderIdKey, clientConfiguration.ProviderSecret, "https://api.twitter.com/1.1/account/verify_credentials.json?skip_status=true&include_email=true"); try { using (var response = accountSettingsRequest.GetResponse()) { using (var responseStream = response.GetResponseStream()) { twitterUserData = (TwitterUserData)twitterUserSerializer.ReadObject(responseStream); if (String.IsNullOrWhiteSpace(twitterUserData.Screen_Name)) { Logger.Error("Twitter: missing screen_name"); return(AuthenticationResult.Failed); } } } } catch (Exception ex) { Logger.Error(ex, "Twitter verify_credentials"); return(AuthenticationResult.Failed); } var userData = new Dictionary <string, string>(); userData["id"] = userAccessToken.Split('-')[0]; userData["username"] = twitterUserData.Screen_Name; userData["email"] = twitterUserData.Email; string id = userData["id"]; string name; // Some oAuth providers do not return value for the 'username' attribute. // In that case, try the 'name' attribute. If it's still unavailable, fall back to 'id' if (!userData.TryGetValue("username", out name) && !userData.TryGetValue("name", out name)) { name = id; } // add the access token to the user data dictionary just in case page developers want to use it userData["accesstoken"] = userAccessToken; return(new AuthenticationResult( isSuccessful: true, provider: this.ProviderName, providerUserId: id, userName: name, extraData: userData)); }
public IAuthenticationClient Build(ProviderConfigurationRecord providerConfigurationRecord) { return(new LinkedInClient(providerConfigurationRecord.ProviderIdKey, providerConfigurationRecord.ProviderSecret)); }
public ResponseAction PostTwitter(PostToTwitterViewModel message) { ResponseAction rsp = new ResponseAction(); rsp.Success = true; bool trysended = false; List <TwitterAccountPart> TwitterAccountSettings = Twitter_GetAccessToken(message.AccountList); ProviderConfigurationRecord pcr = _providerConfigurationService.Get("Twitter"); foreach (TwitterAccountPart Faccount in TwitterAccountSettings) { try { trysended = true; OAuthTokens accesstoken = new OAuthTokens() { AccessToken = Faccount.UserToken, AccessTokenSecret = Faccount.UserTokenSecret, ConsumerKey = pcr.ProviderIdKey, ConsumerSecret = pcr.ProviderSecret }; TwitterResponse <TwitterStatus> response; string realmessage = message.Message; if (!string.IsNullOrEmpty(message.Link)) { realmessage += " " + message.Link; } if (string.IsNullOrEmpty(message.Picture)) { response = TwitterStatus.Update(accesstoken, realmessage.Trim()); } else { var mediaPath = HostingEnvironment.IsHosted ? HostingEnvironment.MapPath("~/Media/") ?? "" : Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Media"); string physicalPath = mediaPath + _shellsettings.Name + "\\" + message.Picture; byte[] photo = System.IO.File.ReadAllBytes(physicalPath); response = TwitterStatus.UpdateWithMedia(accesstoken, realmessage.Trim(), photo, new StatusUpdateOptions() { UseSSL = true, APIBaseAddress = "http://api.twitter.com/1.1/" }); } if (response.Result != RequestResult.Success) { if (response.Content != null) { Logger.Error("response.Content:" + response.Content); } rsp.Success = false; if (response.ErrorMessage != null) { Logger.Error("response.ErrorMessage:" + response.ErrorMessage); _notifier.Add(NotifyType.Error, T("Can't post on twitter: {0} {1}", Faccount.DisplayAs, response.ErrorMessage)); } else { var serializer = new System.Web.Script.Serialization.JavaScriptSerializer(); var jsondict = serializer.Deserialize <Dictionary <string, object> >(response.Content); ArrayList errors = (ArrayList)jsondict["errors"]; foreach (System.Collections.Generic.Dictionary <string, object> error in errors) { string errormsg = ""; foreach (var errordict in error) { errormsg += " " + errordict.Key.ToString() + ":" + errordict.Value.ToString(); } _notifier.Add(NotifyType.Error, T("Can't post on twitter: {0} {1}", Faccount.DisplayAs, errormsg)); } } } } catch (Exception ex) { Logger.Error("Twitter Posting Error Message::" + ex.Message); rsp.Success = false; rsp.Message = "Twitter Posting Error Message: " + ex.Message; _notifier.Add(NotifyType.Error, T("Twitter Posting {0} Error Message: {1}", Faccount.DisplayAs, ex.Message)); } } if (trysended && rsp.Success) { _notifier.Add(NotifyType.Information, T("Twitter posted")); } return(rsp); }
public ActionResult GetPostTokenTwitter() { ProviderConfigurationRecord pcr = _providerConfigurationService.Get("Twitter"); if (pcr == null) { _notifier.Add(NotifyType.Error, T("No twitter account setting added, add one in Settings -> Open Authentication")); return(RedirectToAction("Index", "TwitterAccount", new { area = "Laser.Orchard.Twitter", id = -10 })); } string consumerKey = pcr.ProviderIdKey; string consumerSecret = pcr.ProviderSecret; // il meccanismo utilizzato è il 3-Legged oAuth if (Request["oauth_token"] == null) { string tmpreq = Request.Url.AbsoluteUri; OAuthTokenResponse reqToken = OAuthUtility.GetRequestToken(consumerKey, consumerSecret, tmpreq); Response.Redirect(string.Format("https://api.twitter.com/oauth/authorize?oauth_token={0}", reqToken.Token)); } else { string requestToken = Request["oauth_token"].ToString(); string verifier = Request["oauth_verifier"].ToString(); var tokens = OAuthUtility.GetAccessToken(consumerKey, consumerSecret, requestToken, verifier); TwitterAccountVM vm = new TwitterAccountVM(); vm.DisplayAs = tokens.ScreenName; vm.UserToken = tokens.Token; vm.UserTokenSecret = tokens.TokenSecret; // conterrà l'account_token_secret #region [recupero immagine] OAuthTokens accessToken = new OAuthTokens(); accessToken.AccessToken = vm.UserToken; accessToken.AccessTokenSecret = vm.UserTokenSecret; accessToken.ConsumerKey = consumerKey; accessToken.ConsumerSecret = consumerSecret; TwitterResponse <TwitterUser> myTwitterUser = TwitterUser.Show(accessToken, tokens.ScreenName); TwitterUser user = myTwitterUser.ResponseObject; var profilePictureUrl = user.ProfileImageLocation; var mediaPath = HostingEnvironment.IsHosted ? HostingEnvironment.MapPath("~/Media/") ?? "" : Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Media"); WebClient webClient = new WebClient(); webClient.DownloadFile(profilePictureUrl, mediaPath + _shellSettings.Name + @"\twitter_" + vm.DisplayAs + ".jpg"); #endregion // var avatarFormat = "https://api.twitter.com/1.1/users/show.json?screen_name={0}"; // var avatarUrl = string.Format(avatarFormat, vm.DisplayAs); // HttpWebRequest avatarRequest = (HttpWebRequest)WebRequest.Create(avatarUrl); // var timelineHeaderFormat = "{0} {1}"; // avatarRequest.Headers.Add("Authorization", String.Format("Bearer {0}", vm.UserToken)); //// avatarRequest.Headers.Add("Authorization", //// string.Format(timelineHeaderFormat, "oauth_token", requestToken)); // avatarRequest.Method = "Get"; // WebResponse timeLineResponse = avatarRequest.GetResponse(); // var reader = new StreamReader(timeLineResponse.GetResponseStream()); // var avatarJson = string.Empty; //using (authResponse) { // using (var reader = new StreamReader(timeLineResponse.GetResponseStream())) { // avatarJson = reader.ReadToEnd(); // } //} // Uri profilePictureUrl = new Uri(string.Format("https://api.twitter.com/1.1/users/show.json?screen_name={1}", vm.DisplayAs )); OrchardRegister(vm); } return(RedirectToAction("Index", "TwitterAccount", new { area = "Laser.Orchard.Twitter", id = -10 })); }
public ActionResult GetPostTokenFacebook() { ProviderConfigurationRecord pcr = _providerConfigurationService.Get("Facebook"); if (pcr == null) { _notifier.Add(NotifyType.Error, T("No facebook account setting added, add one in Settings -> Open Authentication")); return(RedirectToAction("Index", "FacebookAccount", new { area = "Laser.Orchard.Facebook", id = -10 })); } string app_id = pcr.ProviderIdKey; string app_secret = pcr.ProviderSecret; string scope = "publish_actions,manage_pages,publish_pages,user_photos";//user_status status_updated nelle extended permission if (Request["code"] == null) { string url = string.Format( "https://graph.facebook.com/oauth/authorize?client_id={0}&redirect_uri={1}&scope={2}", app_id, Request.Url.AbsoluteUri, scope); Response.Redirect(url, false); } else { Dictionary <string, string> tokens = new Dictionary <string, string>(); string url = string.Format("https://graph.facebook.com/oauth/access_token?client_id={0}&redirect_uri={1}&scope={2}&code={3}&client_secret={4}", app_id, Request.Url.AbsoluteUri, scope, Request["code"].ToString(), app_secret); HttpWebRequest request = System.Net.WebRequest.Create(url) as HttpWebRequest; string access_token = ""; using (HttpWebResponse response = request.GetResponse() as HttpWebResponse) { StreamReader reader = new StreamReader(response.GetResponseStream()); string vals = reader.ReadToEnd(); var json = JObject.Parse(vals); if ((json["access_token"]).Type != JTokenType.Null) { access_token = (json["access_token"] ?? "").ToString(); } } var client = new FacebookClient(access_token); // FacebookPostSettingPart getpart = _orchardServices.WorkContext.CurrentSite.As<FacebookPostSettingPart>(); // getpart.FacebookAccessToken = access_token; object taskresult = client.Get("/me"); var result = (IDictionary <string, object>)taskresult; string facebookUserId = (string)result["id"]; string facebookUserName = (string)result["name"]; FacebookAccountVM fvm = new FacebookAccountVM(); fvm.UserToken = access_token; fvm.UserIdFacebook = facebookUserId; fvm.UserName = facebookUserName; OrchardRegister(fvm); JsonObject jsonResponse = client.Get("me/accounts") as JsonObject; Uri profilePictureUrl = new Uri(string.Format("https://graph.facebook.com/{0}/picture?type={1}&access_token={2}", facebookUserId, "small", access_token)); var mediaPath = HostingEnvironment.IsHosted ? HostingEnvironment.MapPath("~/Media/") ?? "" : Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Media"); WebClient webClient = new WebClient(); webClient.DownloadFile(profilePictureUrl, mediaPath + _shellSettings.Name + @"\facebook_" + facebookUserId + ".jpg"); Dictionary <string, string> ElencoPagine = new Dictionary <string, string>(); foreach (var account in (JsonArray)jsonResponse["data"]) { string accountName = (string)(((JsonObject)account)["name"]); fvm = new FacebookAccountVM(); fvm.UserToken = access_token; fvm.PageName = accountName; fvm.PageToken = (string)(((JsonObject)account)["access_token"]); fvm.IdPage = (string)(((JsonObject)account)["id"]); profilePictureUrl = new Uri(string.Format("https://graph.facebook.com/{0}/picture?type={1}&access_token={2}", fvm.IdPage, "small", access_token)); webClient = new WebClient(); webClient.DownloadFile(profilePictureUrl, mediaPath + _shellSettings.Name + @"\facebook_" + fvm.IdPage + ".jpg"); fvm.UserIdFacebook = fvm.IdPage; fvm.UserName = accountName; OrchardRegister(fvm); } return(RedirectToAction("Index", "FacebookAccount", new { area = "Laser.Orchard.Facebook", id = -10 })); } return(null); }
public IAuthenticationClient Build(ProviderConfigurationRecord providerConfigurationRecord) { return(new MicrosoftClient(providerConfigurationRecord.ProviderIdKey, providerConfigurationRecord.ProviderSecret, "wl.basic", "wl.emails")); }