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