r7044 - in dumbhippo/trunk/server: src/com/dumbhippo/server/impl src/com/dumbhippo/web/servlets web web/jsp-gnome web/jsp3 web/tags/3



Author: marinaz
Date: 2007-12-12 16:26:13 -0600 (Wed, 12 Dec 2007)
New Revision: 7044

Removed:
   dumbhippo/trunk/server/src/com/dumbhippo/web/servlets/FacebookVerifyServlet.java
Modified:
   dumbhippo/trunk/server/src/com/dumbhippo/server/impl/FacebookSystemBean.java
   dumbhippo/trunk/server/src/com/dumbhippo/web/servlets/FacebookServlet.java
   dumbhippo/trunk/server/web/jsp-gnome/account.jsp
   dumbhippo/trunk/server/web/jsp3/account.jsp
   dumbhippo/trunk/server/web/jsp3/person.jsp
   dumbhippo/trunk/server/web/servlet-info.xml
   dumbhippo/trunk/server/web/tags/3/accountEditTableExternals.tag
Log:
Move processing of Facebook authentication tokens that we get after Mugshot users 
log in to Facebook from FacebookVerifyServlet to FacebookServlet. Change the "next" 
parameter we pass to Facebook login.php to be something like "next=?next=home", rather
then "next=/facebook-verify-from-home". 

This change was necessary because our callback url changed from "http://mugshot.org"; 
to "http://mugshot.org/facebook"; in order to have FacebookServlet provide Facebook 
with the content of our application page when it makes requests to our callback url.

Modified: dumbhippo/trunk/server/src/com/dumbhippo/server/impl/FacebookSystemBean.java
===================================================================
--- dumbhippo/trunk/server/src/com/dumbhippo/server/impl/FacebookSystemBean.java	2007-12-12 20:33:11 UTC (rev 7043)
+++ dumbhippo/trunk/server/src/com/dumbhippo/server/impl/FacebookSystemBean.java	2007-12-12 22:26:13 UTC (rev 7044)
@@ -178,9 +178,9 @@
         if ((facebookEvent.getEventType() == FacebookEventType.LOGIN_STATUS_EVENT) && (facebookEvent.getCount() <= 0)) {
         	// facebookEvent.getCount() = -1 is a special event for prompting the user to save their Facebook login info
         	if (facebookEvent.getCount() == 0)
-	            return "http://api.facebook.com/login.php?api_key="; + getApiKey() + "&v=1.0&next=/facebook-verify-from-home";
+	            return "http://api.facebook.com/login.php?api_key="; + getApiKey() + "&v=1.0&next=?next=home";
         	else 
-        		return "http://api.facebook.com/login.php?api_key="; + getApiKey() + "&v=1.0&skipcookie=1&next=/facebook-verify-from-home";
+        		return "http://api.facebook.com/login.php?api_key="; + getApiKey() + "&v=1.0&skipcookie=1&next=?next=home";
 	    } else {
 		    return "http://www.facebook.com/"; + facebookEvent.getEventType().getPageName() +  ".php?uid=" 
 	               + facebookEvent.getFacebookAccount().getFacebookUserId();

Modified: dumbhippo/trunk/server/src/com/dumbhippo/web/servlets/FacebookServlet.java
===================================================================
--- dumbhippo/trunk/server/src/com/dumbhippo/web/servlets/FacebookServlet.java	2007-12-12 20:33:11 UTC (rev 7043)
+++ dumbhippo/trunk/server/src/com/dumbhippo/web/servlets/FacebookServlet.java	2007-12-12 22:26:13 UTC (rev 7044)
@@ -47,6 +47,8 @@
 import com.dumbhippo.server.views.SystemViewpoint;
 import com.dumbhippo.server.views.UserViewpoint;
 import com.dumbhippo.tx.RetryException;
+import com.dumbhippo.web.SigninBean;
+import com.dumbhippo.web.UserSigninBean;
 import com.dumbhippo.web.WebEJBUtil;
 import com.facebook.api.FacebookParam;
 import com.facebook.api.FacebookSignatureUtil;
@@ -65,7 +67,43 @@
 		config = WebEJBUtil.defaultLookup(Configuration.class);
 	}	
 	
+	// we get a GET request when a user logs in to Facebook and we get a callback with the authentication token
 	@Override
+	protected String wrappedDoGet(HttpServletRequest request, HttpServletResponse response) throws IOException, HumanVisibleException, HttpException, ServletException, RetryException {
+		String facebookAuthToken = request.getParameter("auth_token");
+		if (facebookAuthToken != null)
+			facebookAuthToken = facebookAuthToken.trim();
+		
+		if (facebookAuthToken == null || facebookAuthToken.equals("")) 
+			throw new HttpException(HttpResponseCode.BAD_REQUEST, "Facebook auth_token not provided");
+
+		String next = request.getParameter("next");
+		String redirectUrl = "/";
+		if (next != null && !next.equals("home"))
+			redirectUrl = redirectUrl + next;
+		
+		redirectUrl = redirectUrl + "?auth_token=" + facebookAuthToken;
+		FacebookTracker facebookTracker = WebEJBUtil.defaultLookup(FacebookTracker.class);
+		SigninBean signin = SigninBean.getForRequest(request);
+		
+		if (!(signin instanceof UserSigninBean))
+			throw new RuntimeException("this operation requires checking signin.valid first to be sure a user is signed in");
+		
+    	try {
+    	    // request a session key for the signed in user and set it in the database 
+    	    facebookTracker.updateOrCreateFacebookAccount(((UserSigninBean)signin).getViewpoint(), facebookAuthToken);
+    	} catch (FacebookSystemException e) {
+            redirectUrl = redirectUrl + "&error_message=" + e.getMessage();		
+    	}
+		response.sendRedirect(redirectUrl);
+		return null;
+	}
+	
+	// we get a POST request when our application page is loaded on Facebook
+	// input values from the form on that page are passed in along with usuald Facebook parameters when the from has
+	// been submitted (the action for the form is to reload the application page on Facebook, but the submitted values
+	// are passed along with the request for page content from us)
+	@Override
 	protected String wrappedDoPost(HttpServletRequest request, HttpServletResponse response) throws IOException, HumanVisibleException, HttpException, ServletException, RetryException {
 		logger.debug("full request is: {}", request.toString());
 		logger.debug("context params are:");
@@ -297,7 +335,8 @@
 
 			String floatStyle = "";
 			String labelWidth = "180";
-			String leftSideWidth = "width:480px;";
+			String leftSideWidth = "width:490px;";
+			String categoryNameLeftMargin = "margin-left:-178px;";
 			if (user.getAccount().getHasAcceptedTerms()) {
 			    xml.appendTextNode("span", "Updates to the information below will be reflected in ",
 				    	           "style", "margin-left:15px;");
@@ -309,17 +348,18 @@
 		    	                   "style", "margin-left:15px;");		
 			    floatStyle="float:left;";
 			    labelWidth="120";
-			    leftSideWidth = "width:420px;";
+			    leftSideWidth = "width:430px;";
+			    categoryNameLeftMargin = "margin-left:-118px;";
 		    }
 		    ExternalAccountCategory currentCategory = null;
 		    boolean hadInitialInfo = false;
 		    xml.openElement("div", "style", "position:relative;" + leftSideWidth + floatStyle);
-		    xml.openElement("fb:editor", "action", "", "width", "300", "labelwidth", labelWidth);
+		    xml.openElement("fb:editor", "action", "", "width", "310", "labelwidth", labelWidth);
 		    for (ExternalAccountView externalAccount : getSupportedAccounts(user)) {
 		    	if (currentCategory == null || !currentCategory.equals(externalAccount.getExternalAccountType().getCategory())) {
 				    currentCategory = externalAccount.getExternalAccountType().getCategory();
 		    		xml.openElement("fb:editor-custom");
-				    xml.appendTextNode("h3", currentCategory.getCategoryName(), "style", "margin-left:-117px;" );		    	
+				    xml.appendTextNode("h3", currentCategory.getCategoryName(), "style", categoryNameLeftMargin);		    	
 				    xml.closeElement();
 		    	}
 			    xml.openElement("fb:editor-custom", "label", externalAccount.getSiteName());
@@ -373,13 +413,14 @@
 		    xml.closeElement(); // div with the form
 		    
 		    if (!user.getAccount().getHasAcceptedTerms()) {
-		    	xml.openElement("div", "style", "width:200px;float:left;color:#666666;font-weight:bold;margin-top:34px;margin-left:20px;");
+		    	xml.openElement("div", "style", "width:200px;float:left;color:#666666;font-weight:bold;margin-top:34px;margin-left:10px;");
 			    xml.append("Do you already have a Mugshot account? Don't fill in this stuff, just verify" +
 			    		   " your Mugshot account by following this link.");
 			    xml.openElement("form", "action", "http://dogfood.mugshot.org/facebook-add";, "target", "_blank", "method", "GET");
 			    // there didn't seem to be a way to get buttons in fb:editor to open in a new window, which is what we want here, so we are using 
 			    // our own form and buttons 
-			    String buttonStyle = "background-color:#3B5998;color:#ffffff;border-width:1px;padding-top:2px;padding-bottom:2px;padding-right:6px;padding-left:6px;border-top-color:#D8DFEA;border-left-color:#D8DFEA;border-right-color:#0E1F5B;border-bottom-color:#0E1F5B;margin-top:20px;margin-bottom:30px;";
+			    // original top and left border color on facebook is #D8DFEA, but it looks too light to me
+			    String buttonStyle = "background-color:#3B5998;color:#ffffff;border-width:1px;padding-top:2px;padding-bottom:2px;padding-right:6px;padding-left:6px;border-top-color:#728199;border-left-color:#728199;border-right-color:#0E1F5B;border-bottom-color:#0E1F5B;margin-top:20px;margin-bottom:30px;";
 			    xml.appendEmptyNode("input", "type", "submit", "value", "Verify My Mugshot Account", "style", buttonStyle);
 			    xml.closeElement();		
 			    xml.append("Want to create a Mugshot account? It's free and easy and helps you see all your friends' activities in one place, share links, and read feeds in a social setting.");

Deleted: dumbhippo/trunk/server/src/com/dumbhippo/web/servlets/FacebookVerifyServlet.java
===================================================================
--- dumbhippo/trunk/server/src/com/dumbhippo/web/servlets/FacebookVerifyServlet.java	2007-12-12 20:33:11 UTC (rev 7043)
+++ dumbhippo/trunk/server/src/com/dumbhippo/web/servlets/FacebookVerifyServlet.java	2007-12-12 22:26:13 UTC (rev 7044)
@@ -1,74 +0,0 @@
-package com.dumbhippo.web.servlets;
-
-import java.io.IOException;
-
-import javax.servlet.ServletConfig;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.slf4j.Logger;
-
-import com.dumbhippo.GlobalSetup;
-import com.dumbhippo.server.FacebookSystemException;
-import com.dumbhippo.server.FacebookTracker;
-import com.dumbhippo.server.HumanVisibleException;
-import com.dumbhippo.tx.RetryException;
-import com.dumbhippo.web.SigninBean;
-import com.dumbhippo.web.UserSigninBean;
-import com.dumbhippo.web.WebEJBUtil;
-
-public class FacebookVerifyServlet extends AbstractServlet {
-
-	@SuppressWarnings("unused")
-	private static final Logger logger = GlobalSetup.getLogger(FacebookVerifyServlet.class);
-	
-	static final long serialVersionUID = 1;
-	
-	@Override
-	protected String wrappedDoGet(HttpServletRequest request, HttpServletResponse response) throws IOException, HumanVisibleException, HttpException, ServletException, RetryException {
-		String facebookAuthToken = request.getParameter("auth_token");
-		if (facebookAuthToken != null)
-			facebookAuthToken = facebookAuthToken.trim();
-		
-		if (facebookAuthToken == null || facebookAuthToken.equals("")) 
-			throw new HttpException(HttpResponseCode.BAD_REQUEST, "Facebook auth_token not provided");
-
-		ServletConfig config = getServletConfig();		
-		String redirect = config.getInitParameter("redirect");
-		String redirectUrl = "/";
-		if (redirect != null && !redirect.equals("home"))
-			redirectUrl = redirectUrl + redirect;
-		
-		redirectUrl = redirectUrl + "?auth_token=" + facebookAuthToken;
-		FacebookTracker facebookTracker = WebEJBUtil.defaultLookup(FacebookTracker.class);
-		SigninBean signin = SigninBean.getForRequest(request);
-		
-		if (!(signin instanceof UserSigninBean))
-			throw new RuntimeException("this operation requires checking signin.valid first to be sure a user is signed in");
-		
-    	try {
-    	    // request a session key for the signed in user and set it in the database 
-    	    facebookTracker.updateOrCreateFacebookAccount(((UserSigninBean)signin).getViewpoint(), facebookAuthToken);
-    	} catch (FacebookSystemException e) {
-            redirectUrl = redirectUrl + "&error_message=" + e.getMessage();		
-    	}
-		response.sendRedirect(redirectUrl);
-		return null;
-	}	
-		
-	@Override
-	protected boolean isReadWrite(HttpServletRequest request) {
-		// The method is GET, since we need links that the user can just click upon,
-		// but they have side effects. This is OK since the links are unique, so 
-		// caching won't happen.
-		
-		return true;
-	}
-	
-
-	@Override
-	protected boolean requiresTransaction(HttpServletRequest request) {
-		return true;
-	}
-}

Modified: dumbhippo/trunk/server/web/jsp-gnome/account.jsp
===================================================================
--- dumbhippo/trunk/server/web/jsp-gnome/account.jsp	2007-12-12 20:33:11 UTC (rev 7043)
+++ dumbhippo/trunk/server/web/jsp-gnome/account.jsp	2007-12-12 22:26:13 UTC (rev 7044)
@@ -16,7 +16,7 @@
 <dh:bean id="account" class="com.dumbhippo.web.pages.AccountPage" scope="page"/>
 
 <%-- This is a Facebook authetication token and an error message generated by us if we couldn't --%>
-<%-- process the token. We use FacebookVerifyFromAccountServlet to process the token, which then redirects here. --%>
+<%-- process the token. We use FacebookServlet to process the token, which then redirects here. --%>
 <jsp:setProperty name="account" property="facebookAuthToken" param="auth_token"/>
 <jsp:setProperty name="account" property="facebookErrorMessage" param="error_message"/>
 

Modified: dumbhippo/trunk/server/web/jsp3/account.jsp
===================================================================
--- dumbhippo/trunk/server/web/jsp3/account.jsp	2007-12-12 20:33:11 UTC (rev 7043)
+++ dumbhippo/trunk/server/web/jsp3/account.jsp	2007-12-12 22:26:13 UTC (rev 7044)
@@ -15,7 +15,7 @@
 <dh:bean id="account" class="com.dumbhippo.web.pages.AccountPage" scope="page"/>
 
 <%-- This is a Facebook authetication token and an error message generated by us if we couldn't --%>
-<%-- process the token. We use FacebookVerifyFromAccountServlet to process the token, which then redirects here. --%>
+<%-- process the token. We use FacebookServlet to process the token, which then redirects here. --%>
 <jsp:setProperty name="account" property="facebookAuthToken" param="auth_token"/>
 <jsp:setProperty name="account" property="facebookErrorMessage" param="error_message"/>
 

Modified: dumbhippo/trunk/server/web/jsp3/person.jsp
===================================================================
--- dumbhippo/trunk/server/web/jsp3/person.jsp	2007-12-12 20:33:11 UTC (rev 7043)
+++ dumbhippo/trunk/server/web/jsp3/person.jsp	2007-12-12 22:26:13 UTC (rev 7044)
@@ -10,7 +10,7 @@
 <dht3:requireStackedPersonBean/>
 
 <%-- This is an error message about logging in to Facebook generated by us if we couldn't --%>
-<%-- process the Facebook authentication token. We use FacebookVerifyFromHomeServlet to process --%>
+<%-- process the Facebook authentication token. We use FacebookServlet to process --%>
 <%-- the token, which then redirects here. --%>
 <jsp:setProperty name="person" property="facebookErrorMessage" param="error_message"/>
 

Modified: dumbhippo/trunk/server/web/servlet-info.xml
===================================================================
--- dumbhippo/trunk/server/web/servlet-info.xml	2007-12-12 20:33:11 UTC (rev 7043)
+++ dumbhippo/trunk/server/web/servlet-info.xml	2007-12-12 22:26:13 UTC (rev 7044)
@@ -232,44 +232,6 @@
    </servlet-mapping>   
 
    <servlet>
-      <servlet-name>VerifyServlet</servlet-name>
-      <servlet-class>com.dumbhippo.web.servlets.VerifyServlet</servlet-class>
-   </servlet>   
-   
-   <servlet-mapping>
-      <servlet-name>VerifyServlet</servlet-name>
-      <url-pattern>/verify</url-pattern>
-   </servlet-mapping>
-
-   <servlet>
-      <servlet-name>FacebookVerifyFromAccountServlet</servlet-name>
-      <servlet-class>com.dumbhippo.web.servlets.FacebookVerifyServlet</servlet-class>
-      <init-param>
-          <param-name>redirect</param-name>
-          <param-value>account</param-value>
-      </init-param>      
-   </servlet>   
-
-   <servlet>
-      <servlet-name>FacebookVerifyFromHomeServlet</servlet-name>
-      <servlet-class>com.dumbhippo.web.servlets.FacebookVerifyServlet</servlet-class>
-      <init-param>
-          <param-name>redirect</param-name>
-          <param-value>home</param-value>
-      </init-param>      
-   </servlet>   
-
-   <servlet-mapping>
-      <servlet-name>FacebookVerifyFromAccountServlet</servlet-name>
-      <url-pattern>/facebook-verify-from-account</url-pattern>
-   </servlet-mapping>
-         
-   <servlet-mapping>
-      <servlet-name>FacebookVerifyFromHomeServlet</servlet-name>
-      <url-pattern>/facebook-verify-from-home</url-pattern>
-   </servlet-mapping>
-
-   <servlet>
       <servlet-name>FacebookAddServlet</servlet-name>
       <servlet-class>com.dumbhippo.web.servlets.FacebookAddServlet</servlet-class>
    </servlet> 

Modified: dumbhippo/trunk/server/web/tags/3/accountEditTableExternals.tag
===================================================================
--- dumbhippo/trunk/server/web/tags/3/accountEditTableExternals.tag	2007-12-12 20:33:11 UTC (rev 7043)
+++ dumbhippo/trunk/server/web/tags/3/accountEditTableExternals.tag	2007-12-12 22:26:13 UTC (rev 7044)
@@ -179,7 +179,7 @@
 							</c:when>
 							<c:otherwise>
 								<a
-									href="http://api.facebook.com/login.php?api_key=${account.facebookApiKey}&v=1.0&next=/facebook-verify-from-account";>Log in to receive updates</a>
+									href="http://api.facebook.com/login.php?api_key=${account.facebookApiKey}&v=1.0&next=?next=account";>Log in to receive updates</a>
 							</c:otherwise>
 						</c:choose>
 					</c:when>



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]