Why not doing this directly the wicket-way with PageParameters and your
own Session?

FBPage(PageParameters params) {
   // do something with: params.getString("xy");

   // construct a new MySession object within the WicketApp.init method:
   // @Override Session newSession(Request request, Response response) {
   //       return new MySession(request); }

   // No need for complicated stuff just call 'getSession()' and get or
set the token:
   MySession session = (MySession)getSession();
   // session.getToken();
}

I've done similar things in jetwick for twitter authentication.

Regards,
Peter.



-- 
http://jetwick.com open twitter search


> I am doing a facebook application in wicket. To get facebook authentication
> token, I have written a wicket filter as below:
>
>
>
> package com.mycompany.myapp.config;
>
> import java.io.ByteArrayOutputStream;
> import java.io.IOException;
> import java.io.InputStream;
> import java.net.URL;
>
> import javax.servlet.Filter;
> import javax.servlet.FilterChain;
> import javax.servlet.FilterConfig;
> import javax.servlet.ServletException;
> import javax.servlet.ServletRequest;
> import javax.servlet.ServletResponse;
> import javax.servlet.http.HttpServletRequest;
> import javax.servlet.http.HttpServletResponse;
> import javax.servlet.http.HttpSession;
>
> import com.visural.common.StringUtil;
>
> public class FBOAuth implements Filter {
>     public void init(FilterConfig fc) throws ServletException {
>     }
>
>     public void doFilter(ServletRequest sr, ServletResponse sr1, FilterChain
> fc)
>             throws IOException, ServletException {
>         HttpServletRequest req = (HttpServletRequest) sr;
>         HttpServletResponse res = (HttpServletResponse) sr1;
>         res.sendRedirect(FaceBook.getLoginRedirectURL());
>         String code = sr.getParameter("code");
>         if (StringUtil.isNotBlankStr(code)) {
>             String authURL = FaceBook.getAuthURL(code);
>             URL url = new URL(authURL);
>             try {
>                 String result = readURL(url);
>                 String accessToken = null;
>                 Integer expires = null;
>                 String[] pairs = result.split("&");
>                 for (String pair : pairs) {
>                     String[] kv = pair.split("=");
>                     if (kv.length != 2) {
>                         throw new RuntimeException("Unexpected auth
> response");
>                     } else {
>                         if (kv[0].equals("access_token")) {
>                             accessToken = kv[1];
>                         }
>                         if (kv[0].equals("expires")) {
>                             expires = Integer.valueOf(kv[1]);
>                         }
>                     }
>                 }
>                 if (accessToken != null && expires != null)
> {
>                     HttpSession ses = req.getSession();
>                     ses.setAttribute("authToken", accessToken);
>
>
>                 } else {
>                     throw new RuntimeException(
>                             "Access token and expires not found");
>                 }
>             } catch (IOException e) {
>                 throw new RuntimeException(e);
>             }
>
>         }
>     }
>     private String readURL(URL url) throws IOException {
>         ByteArrayOutputStream baos = new ByteArrayOutputStream();
>         InputStream is = url.openStream();
>         int r;
>         while ((r = is.read()) != -1) {
>             baos.write(r);
>         }
>         return new String(baos.toByteArray());
>     }
>
>     public void destroy() {
>     }
> }
>
>
>
>
>
> In the doFilter method, I have done all the redirects required and gotten
> the authentication token(accesstoken). At this point, I store the value as
> an attribute to the httpSession which i have gotten by
> ServleteRequest.getSession();
>
> I want to acess this token in a wicket page class so that I use RestFB to
> create a FaceBook Client etc. This is what I have done in the wicket page
> class:
>
> HttpSession session = null;
>
>     if (RequestCycle.get()!= null)
>         session = ((WebRequest) RequestCycle.get().getRequest())
>                 .getHttpServletRequest().getSession();
>
>     if (session != null) {
>
>         System.out.print("################# AuthToken: "
>                 + session.getAttribute("authToken"));
>
>     }
>
>
> However, this is the output I get and I am totally stuck:
>
> ################# AuthToken: null
>
>
> Where am i going wrong?
>


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

Reply via email to