protected void Page_Load(object sender, EventArgs e) { CurrentMaster.Title.TitleText = ResHelper.GetString("socialnetworking.googleplus.accesstoken"); CurrentMaster.Title.TitleImage = GetImageUrl("Others/GooglePlus/googleplus.png"); string accessToken = null, refreshToken = null; Dictionary <string, string> tokens = null; string clientID = Request.QueryString["token_client_id"]; string clientSecret = Request.QueryString["token_client_secret"]; string txtToken = null; string txtTokenSecret = null; string error = Request.QueryString["error"]; string state = Request.QueryString["state"]; // Check Social networking DLL and settings if (!SiteManagerFunctions.CheckSocialNetworkingDLL()) { lblStatus.Text = ResHelper.GetString("socialnetworking.renameddll"); } else if (String.IsNullOrEmpty(state) && (String.IsNullOrEmpty(clientID) || String.IsNullOrEmpty(clientSecret))) { lblStatus.Text = ResHelper.GetString("socialnetworking.googleplus.apisettingsmissing"); } else { // If access denied if (error.EqualsCSafe("access_denied")) { // Close the window StringBuilder script = new StringBuilder("if(wopener.setAccessTokenToTextBox){CloseDialog();}"); ScriptHelper.RegisterStartupScript(Page, typeof(string), "TokenScript", ScriptHelper.GetScript(script.ToString())); } else { // If this is OAuth callback -> get clientID and clientSecret from state if (state != null) { foreach (string s in state.Split(new string[1] { "&" }, StringSplitOptions.None)) { if (s.StartsWithCSafe("token_client_id=")) { clientID = s.Substring(16); } if (s.StartsWithCSafe("token_client_secret=")) { clientSecret = s.Substring(20); } } } // Authenticate and retrieve tokens tokens = GooglePlusProvider.Authorize(clientID, clientSecret); if (tokens.Count > 0) { accessToken = tokens["AccessToken"]; refreshToken = tokens["RefreshToken"]; if (!String.IsNullOrEmpty(accessToken)) { // Extract txtToken values from state txtToken = null; txtTokenSecret = null; string[] stateParams = state.Split(new string[1] { "&" }, StringSplitOptions.None); foreach (string s in stateParams) { if (s.StartsWithCSafe("txtToken=")) { txtToken = s.Substring(9); } if (s.StartsWithCSafe("txtTokenSecret=")) { txtTokenSecret = s.Substring(15); } } // Return access token values and close the window StringBuilder script = new StringBuilder("if(wopener.setAccessTokenToTextBox){wopener.setAccessTokenToTextBox('"); script.Append(txtToken); script.Append("', '"); script.Append(accessToken); script.Append("', '"); script.Append(txtTokenSecret); script.Append("', '"); script.Append(refreshToken); script.Append("');"); script.Append("CloseDialog();}"); ScriptHelper.RegisterStartupScript(Page, typeof(string), "TokenScript", ScriptHelper.GetScript(script.ToString())); } } else { // There was an error somewhere lblStatus.Text = ResHelper.GetString("socialnetworking.authorizationerror"); } } } }
/// <summary> /// Initializes the control properties /// </summary> protected override void SetupControl() { if (this.StopProcessing) { // Do not process } else { string apiKey = SettingsKeyInfoProvider.GetStringValue(SiteContext.CurrentSiteName + ".CMSGooglePlusClientID"); string apiSecret = SettingsKeyInfoProvider.GetStringValue(SiteContext.CurrentSiteName + ".CMSGooglePlusClientSecret"); string accessToken = SettingsKeyInfoProvider.GetStringValue(SiteContext.CurrentSiteName + ".CMSGooglePlusAccessToken"); // Check Social networking DLL and settings if (!SystemContext.IsFullTrustLevel) { // Error label is displayed in Design mode when Dll is renamed ShowDesignErrorOrHide(GetString("socialnetworking.fulltrustrequired")); } else if (String.IsNullOrEmpty(apiKey) || String.IsNullOrEmpty(apiSecret) || String.IsNullOrEmpty(accessToken)) { // Error label is displayed in Design mode when missing settings string pathToSettings = SocialMediaHelper.GetPathToGooglePlusSettings(); ShowDesignErrorOrHide(String.Format(GetString("socialnetworking.googleplus.allsettingsmissing"), pathToSettings)); } else { // Process ID - it can be URL string showID = ExtractUserID(FeedID); GooglePlusPerson profile = null; // Fetch data from Google+ try { // Try to get person directly profile = GooglePlusProvider.GetProfileInfo(showID); } catch { try { // Try alternative approach (search for person) profile = GooglePlusProvider.FindPerson(showID); } catch { ShowDesignErrorOrHide(String.Format(GetString("sm.googleplus.nopeoplefound"), showID)); } } if (profile != null) { showID = profile.UserID; List <GooglePlusActivity> activities = GooglePlusProvider.GetActivities(showID, NumberOfActivities); // Build code for plugin StringBuilder sb = new StringBuilder(); sb.Append("<div class=\"gpaf-plugin\"><div class=\"gpaf-doc\" style=\"width: "); sb.Append(Width); sb.Append("px; height: "); sb.Append(Height); sb.Append("px; border: 1px solid "); sb.Append(BorderColor); sb.Append("; position: relative; background-color: "); sb.Append(ShellBackgroundColor); sb.Append("\"><div style=\"margin: 15px;\">"); // Build plugin header sb.Append("<div class=\"gpaf-header\">"); sb.Append("<table><tr><td style=\"vertical-align: center;\">"); sb.Append("<a href=\""); sb.Append(profile.URL); sb.Append("\">"); sb.Append("<img src=\""); string imageURL = profile.ImageURL.Remove(profile.ImageURL.Length - 2) + "40"; sb.Append(imageURL); sb.Append("\" alt=\""); sb.Append(profile.DisplayName); sb.Append("\" style=\"float: left; border: none;\" />"); sb.Append("</a>"); sb.Append("</td>"); sb.Append("<td style=\"vertical-align: center; padding-left: 10px;\">"); sb.Append("<a href=\""); sb.Append(profile.URL); sb.Append("\" style=\"text-decoration: none; font-size: 25px; color: "); sb.Append(ShellTextColor); sb.Append(";\">"); sb.Append(profile.DisplayName); sb.Append("</a>"); sb.Append("</td></tr></table>"); sb.Append("</div>"); // Insert section separator sb.Append("<div class=\"gpaf-doc-separator\" style=\"height: 15px; margin-top: 15px; width: 100%; border-top: 1px solid "); sb.Append(BorderColor); sb.Append(";\"></div>"); // Build plugin body sb.Append("<div class=\"gpaf-body\" style=\"height: "); sb.Append(Height - 164); sb.Append("px; overflow: "); sb.Append((Scrollbar) ? "auto" : "hidden"); sb.Append(";\">"); int counting = 1; foreach (GooglePlusActivity s in activities) { sb.Append("<div class=\"gpaf-activity\" style=\"color: "); sb.Append(ActivityTextColor); sb.Append("\">"); sb.Append("<div class=\"gpaf-activity-text\">"); sb.Append(s.Content); sb.Append("</div>"); sb.Append("<div class=\"gpaf-activity-footer\" style=\"color: "); sb.Append(ActivityFooterTextColor); sb.Append("; font-size: 13px; margin-top: 3px;\">"); sb.Append(s.Published); sb.Append("</div>"); sb.Append("</div>"); // Insert activity separator if (counting < activities.Count) { sb.Append("<div class=\"gpaf-body-separator\" style=\"height: 10px; margin-top: 5px; width: 100%; border-top: 1px dashed "); sb.Append(BorderColor); sb.Append(";\"></div>"); counting++; } } sb.Append("</div></div>"); // Insert section separator sb.Append("<div style=\"margin: 15px; position: absolute; bottom: 0px; left: 0px; width: "); sb.Append(Width - 30); sb.Append("px;\">"); sb.Append("<div class=\"gpaf-doc-separator\" style=\"height: 15px; margin-top: 15px; width: 100%; border-top: 1px solid "); sb.Append(BorderColor); sb.Append(";\"></div>"); // Build plugin footer sb.Append("<div class=\"gpaf-footer\">"); sb.Append("<a href=\"https://plus.google.com\">"); sb.Append("<img src=\"https://ssl.gstatic.com/images/icons/gplus-32.png\" alt=\"\" style=\"float: left; border: none;\" />"); sb.Append("</a>"); sb.Append("<div class=\"gpaf-footer-text\" style=\"text-align: left; margin-left: 50px;\">"); sb.Append("<table style=\"height: 32px;\"><tr><td style=\"vertical-align: center;\">"); sb.Append("<a href=\""); sb.Append(profile.URL); sb.Append("\" style=\"text-decoration: none; font-size: 12px; color: "); sb.Append(ShellTextColor); sb.Append(";\">"); sb.Append(ResHelper.GetString("socialnetworking.viewfullprofile")); sb.Append("</a>"); sb.Append("</td></tr></table>"); sb.Append("</div>"); sb.Append("<div style=\"clear: both;\"></div>"); sb.Append("</div>"); // Close open divs and finish plugin sb.Append("</div></div></div>"); ltlPluginCode.Text = sb.ToString(); } else { ShowDesignErrorOrHide(String.Format(GetString("sm.googleplus.nopeoplefound"), showID)); } } } }
protected void Page_Load(object sender, EventArgs e) { PageTitle.TitleText = ResHelper.GetString("socialnetworking.googleplus.accesstoken"); PageTitle.ShowFullScreenButton = false; PageTitle.ShowCloseButton = false; string clientID = Request.QueryString["token_client_id"]; string clientSecret = Request.QueryString["token_client_secret"]; string error = Request.QueryString["error"]; string state = Request.QueryString["state"]; // Check Social networking DLL and settings if (!SystemContext.IsFullTrustLevel) { lblStatus.Text = ResHelper.GetString("socialnetworking.fulltrustrequired"); } else if (String.IsNullOrEmpty(state) && (String.IsNullOrEmpty(clientID) || String.IsNullOrEmpty(clientSecret))) { lblStatus.Text = ResHelper.GetString("socialnetworking.googleplus.apisettingsmissing"); } else { // If access denied if (error.EqualsCSafe("access_denied")) { // Close the window StringBuilder script = new StringBuilder("if(wopener.setAccessTokenToTextBox){CloseDialog();}"); ScriptHelper.RegisterStartupScript(Page, typeof(string), "TokenScript", ScriptHelper.GetScript(script.ToString())); } else { // If this is OAuth callback -> get clientID and clientSecret from state if (state != null) { foreach (string s in state.Split(new string[1] { "&" }, StringSplitOptions.None)) { if (s.StartsWithCSafe("token_client_id=")) { clientID = s.Substring(16); } if (s.StartsWithCSafe("token_client_secret=")) { clientSecret = s.Substring(20); } } } try { // Authenticate and retrieve tokens Dictionary <string, string> tokens = GooglePlusProvider.Authorize(clientID, clientSecret); if (tokens.Count > 0) { string accessToken = tokens["AccessToken"]; string refreshToken = tokens["RefreshToken"]; if (!String.IsNullOrEmpty(accessToken)) { // Extract txtToken values from state string txtToken = null; string txtTokenSecret = null; string[] stateParams = state.Split(new string[1] { "&" }, StringSplitOptions.None); foreach (string s in stateParams) { if (s.StartsWithCSafe("txtToken=")) { txtToken = s.Substring(9); } if (s.StartsWithCSafe("txtTokenSecret=")) { txtTokenSecret = s.Substring(15); } } // Return access token values and close the window StringBuilder script = new StringBuilder("if(wopener.setAccessTokenToTextBox){wopener.setAccessTokenToTextBox('"); script.Append(txtToken); script.Append("', '"); script.Append(accessToken); script.Append("', '"); script.Append(txtTokenSecret); script.Append("', '"); script.Append(refreshToken); script.Append("');"); script.Append("CloseDialog();}"); ScriptHelper.RegisterStartupScript(Page, typeof(string), "TokenScript", ScriptHelper.GetScript(script.ToString())); } } else { // There was an error somewhere lblStatus.Text = ResHelper.GetString("socialnetworking.authorizationerror"); } } catch (Exception ex) { LogAndShowError("SocialMedia", "GooglePlusProvider", ex); } } } }