You solved it :)

I configured my project some days ago with the instructions from your
link. Now I checked everything carefully again, and noticed that I
forgott the following line in WicketApplication.java

---
super.init();
---

Now it seems to work.

Thank you very much!

Best regards
Christoph



On Fri, 2010-03-26 at 14:32 +0100, Martin Funk wrote:
> you are aware of this?
> http://www.danwalmsley.com/2009/04/08/apache-wicket-on-google-app-engine-for-java/
> 
> 2010/3/26 christoph glass <mail.kaffeeser...@googlemail.com>
> 
> > Hi everyone,
> >
> > I'm trying to run a simple Wicket Application with Facebook Connect on
> > Google App Engine.
> >
> > So far it runs local, but when I deploy to Google Facebook Connect wont
> > work.
> >
> > I cant find any examples for using wicket with gae and facebook on the
> > web. Is anyone here who successfully made it?
> >
> > Here is the output from ajax debug window:
> >
> > ---
> > INFO: Using XMLHttpRequest transport
> > INFO:
> > INFO:
> > Initiating Ajax GET request on
> > ?wicket:interface=wicket-9:36:fbconnectpanel::IActivePageBehaviorListener:0:&wicket:ignoreIfNotActive=true&random=0.6834228196057528
> > INFO: Invoking pre-call handler(s)...
> > ERROR: Received Ajax response with code: 500
> > ERROR: 500 error had text:
> > <html><head>
> > <meta http-equiv="content-type" content="text/html;charset=utf-8">
> > <title>500 Server Error</title>
> > </head>
> > <body text=#000000 bgcolor=#ffffff>
> > <h1>Error: Server Error</h1>
> > <h2>The server encountered an error and could not complete your
> > request.<p>If the problem persists, please <A HREF="
> > http://code.google.com/appengine/community.html";>report</A> your problem
> > and mention this error message and the query that caused it.</h2>
> > <h2></h2>
> > </body></html>
> >
> > INFO: Invoking post-call handler(s)...
> > INFO: Invoking failure handler(s)...
> > ---
> >
> > FacebookConnectPanel.java -> took the most from
> > http://cwiki.apache.org/WICKET/adding-facebook-connect.html
> >
> > ---
> > package polizeiwache.sites.auth.facebookconnect;
> >
> > import java.io.IOException;
> >
> >
> > import java.util.ArrayList;
> > import java.util.HashSet;
> > import java.util.List;
> >
> > import javax.servlet.http.HttpServletRequest;
> > import javax.servlet.http.HttpServletResponse;
> >
> > import org.apache.wicket.Page;
> > import org.apache.wicket.ajax.AbstractDefaultAjaxBehavior;
> > import org.apache.wicket.ajax.AjaxRequestTarget;
> > import org.apache.wicket.behavior.SimpleAttributeModifier;
> > import org.apache.wicket.markup.html.WebMarkupContainer;
> > import org.apache.wicket.markup.html.basic.Label;
> > import org.apache.wicket.markup.html.panel.Panel;
> > import org.apache.wicket.protocol.http.WebResponse;
> > import org.apache.wicket.protocol.http.servlet.ServletWebRequest;
> > import org.json.JSONArray;
> > import org.json.JSONException;
> > import org.json.JSONObject;
> > import
> >
> > org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
> > import org.springframework.security.core.GrantedAuthority;
> > import org.springframework.security.core.authority.GrantedAuthorityImpl;
> > import org.springframework.security.core.context.SecurityContext;
> > import org.springframework.security.core.context.SecurityContextHolder;
> > import org.springframework.security.core.context.SecurityContextImpl;
> >
> > import pojos.FacebookUser;
> >
> > //import com.facebook.api.FacebookException;
> > //import com.facebook.api.FacebookJsonRestClient;
> > //import com.facebook.api.FacebookWebappHelper;
> > //import com.facebook.api.ProfileField;
> >
> > import com.google.code.facebookapi.FacebookException;
> > import com.google.code.facebookapi.FacebookJsonRestClient;
> > import com.google.code.facebookapi.FacebookWebappHelper;
> > import com.google.code.facebookapi.ProfileField;
> >
> >
> > //import
> >
> > com.google.appengine.repackaged.org.apache.commons.logging.impl.LogFactoryImpl;
> >
> > /**
> >  * @see http://cwiki.apache.org/WICKET/adding-facebook-connect.html
> >  * @author christoph
> >  *
> >  */
> >
> > @SuppressWarnings("deprecation")
> > public class FacebookConnectPanel extends Panel
> > {
> >
> >        /**
> >         *
> >         */
> >        private static final long serialVersionUID = -5912681574741410118L;
> >
> >        //private static final
> > com.google.appengine.repackaged.org.apache.commons.logging.Log log =
> > LogFactoryImpl.getLog(FacebookConnectPanel.class);
> >    private WebMarkupContainer fbloginDiv;
> >    private Label fblogin;
> >
> >        /**
> >         *
> >         * @param id
> >         */
> >
> >        public FacebookConnectPanel(String id) {
> >                super(id);
> >        }
> >
> >        /**
> >     * This method will the panel
> >     */
> >
> >    public void createPanel() {
> >        fbloginDiv = new WebMarkupContainer("fbloginDiv");
> >        fbloginDiv.setOutputMarkupId(true).setMarkupId("fbloginDiv");
> >        fblogin = new Label("fblogin", "<fb:login-button
> > onlogin='callWicket();'></fb:login-button>");
> >        fblogin.setEscapeModelStrings(false);
> >        fblogin.setOutputMarkupId(true);
> >        if (isAuthenticated())
> >        {
> >            fbloginDiv.add(new SimpleAttributeModifier("style",
> > "display:none;"));
> >        }
> >        fbloginDiv.add(fblogin);
> >        addOrReplace(fbloginDiv);
> >
> >        /**
> >         * This will only be called after they're logged in via facebook
> >         */
> >
> >        final AbstractDefaultAjaxBehavior behave = new
> > AbstractDefaultAjaxBehavior()
> >        {
> >            /**
> >                         *
> >                         */
> >                        private static final long serialVersionUID =
> > -486358491644699655L;
> >
> >                        protected void respond(final AjaxRequestTarget
> > target)
> >            {
> >                // deal with facebook
> >                try {
> >
> >  handleFacebookCallback(target.getPage());
> >                                } catch (IOException e) {
> >                                        e.printStackTrace();
> >                                }
> >                fbloginDiv.add(new SimpleAttributeModifier("style",
> > "display:none;"));
> >                target.addComponent(fbloginDiv);
> >            }
> >        };
> >        add(behave);
> >        CharSequence url = behave.getCallbackUrl();
> >        StringBuffer sb = new StringBuffer();
> >        sb.append("function callWicket() { \n");
> >        sb.append("     var wcall = wicketAjaxGet('");
> >        sb.append(url);
> >        sb.append("', function() { }, function() { });");
> >        sb.append("    }");
> >        Label fbcallback = new Label("fbcallback", sb.toString());
> >        fbcallback.setOutputMarkupId(true);
> >        fbcallback.setEscapeModelStrings(false);
> >        add(fbcallback);
> >
> >    }
> >
> >    /**
> >     * All that we do to log you in from facebook. I put my fbook.key
> > and fbook.secret in the
> >     * properties file.
> >     * @param thePage
> >     * @throws IOException
> >     */
> >
> >    public void handleFacebookCallback(Page thePage) throws IOException
> > {
> >
> >        HttpServletRequest req = ((ServletWebRequest)
> > thePage.getRequest()).getHttpServletRequest();
> >        HttpServletResponse res = ((WebResponse)
> > thePage.getResponse()).getHttpServletResponse();
> >        String api = getLocalizer().getString("fbook.key", this);
> >        String secret = getLocalizer().getString("fbook.secret",
> > this);
> >        FacebookWebappHelper<Object> helper =
> > FacebookWebappHelper.newInstanceJson(req, res, api, secret);
> >
> >        // make sure the login worked
> >        if (helper.isLogin()) {
> >            FacebookJsonRestClient facebookClient =
> > (FacebookJsonRestClient) helper.getFacebookRestClient();
> >            long id;
> >            try {
> >                // grab the logged in user's id
> >                id = facebookClient.users_getLoggedInUser();
> >
> >                // you can bundle ajax calls...
> >                facebookClient.beginBatch();
> >
> >                // i'm going to call the users.getInfo fb api call, just
> > to make sure it works
> >                ArrayList<Long> ids = new ArrayList<Long>();
> >                ids.add(new Long(id));
> >
> >                // put together a set of fields for fb to return
> >                HashSet<ProfileField> fields = new
> > HashSet<ProfileField>();
> >                fields.add(ProfileField.FIRST_NAME);
> >                fields.add(ProfileField.LAST_NAME);
> >
> >                // get the user data
> >                facebookClient.users_getInfo(ids, fields);
> >
> >                // execute the batch (which also terminates batch mode
> > until beginBatch is called again)
> >                List<? extends Object> batchResponse =
> > facebookClient.executeBatch(false);
> >                JSONArray userInfo = (JSONArray) batchResponse.get(0);
> >                JSONObject user = userInfo.getJSONObject(0);
> >
> >                // a pojo user object
> > //                User theUser = new User();
> >                FacebookUser theUser = new FacebookUser();
> >                String username = user.getString("facebookVorname");
> >                theUser.setVorname(username);
> >
> >                // fb emails are proxy, my app needs some kind of holder
> >                theUser.setEmail("nore...@facebook.com");
> >                theUser.setUserId(new Integer(0));
> >                theUser.setFacebook(true);
> >                theUser.setFacebookId(id);
> >
> >                // we use spring, so here we give basic access to the
> > facebook user.
> >                List<GrantedAuthority> gaList = new
> > ArrayList<GrantedAuthority>();
> >                gaList.add(new GrantedAuthorityImpl("STANDARD"));
> >                theUser.setAuthorities(gaList.toArray(new
> > GrantedAuthority[] {}));
> >                GrantedAuthority[] ga = theUser.getAuthorities();
> >                UsernamePasswordAuthenticationToken authentication = new
> > UsernamePasswordAuthenticationToken(theUser, theUser, ga);
> >                SecurityContext context = new SecurityContextImpl();
> >                context.setAuthentication(authentication);
> >                SecurityContextHolder.setContext(context);
> >
> >            } catch (FacebookException e) {
> >                //log.error("facebook issues: " + e);
> >            } catch (JSONException e) {
> >                //log.error("facebook json issues: " + e);
> >            }
> >        }
> >    }
> >
> >    /**
> >     * Do your own kind of auth check
> >     * @return
> >     */
> >
> >    public boolean isAuthenticated() {
> >        return SecurityContextHolder.getContext().getAuthentication() !=
> > null;
> >    }
> >
> >
> > }
> > ---
> >
> > FacebookConnectPanel.html
> >
> > ---
> > <html xmlns:wicket>
> > <body>
> >  <wicket:panel>
> >    <!-- facebook api as of 8/11/09 -->
> >        <script
> > src="
> > http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php";
> > type="text/javascript"></script>
> >
> >    <!-- function for facebook to execute on login-->
> >        <script type="text/javascript" wicket:id="fbcallback">
> >    function callWicket() {
> >     var wcall = wicketAjaxGet('$url$' + '$args$', function() { },
> > function() { });
> >    }
> >    </script>
> >
> >        <div id="loginform">
> >                <div wicket:id="fbloginDiv" style="display:block;">
> >                    <span wicket:id="fblogin">
> >
> >            <!-- facebool login button -->
> >            <fb:login-button onlogin='callWicket();'></fb:login-button>
> >            </span>
> >
> >            <!-- facebook api -->
> >                <script type="text/javascript">
> >                FB.init(fbook.key "/xd_receiver.htm");
> >                </script>
> >            </div>
> >        </div>
> >
> >  </wicket:panel>
> > </body>
> > </html>
> >
> > ---
> >
> > Any help would be most welcome.
> >
> > Thanks and  best regards
> > Christoph
> >
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
> > For additional commands, e-mail: users-h...@wicket.apache.org
> >
> >



---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org

Reply via email to