我想为我的Web应用程序使用身份验证应用程序跳过用户的注册过程。我正在使用http://code.google.com/p/socialauth/ java库来执行身份验证。我面临以下问题在Web应用程序中实现身份验证
1.我已经创建了像Twitter那样的身份验证提供程序的密钥。但我在我的系统上本地运行此应用程序时遇到问题,因为我在生成密钥时需要我的站点地址。
2.我无法配置我的主机文件,因此它将属性设置为我在生成密钥时给出的地址。
这是一段代码执行。
package com.auth.actions;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.util.RequestUtils;
import org.brickred.socialauth.AuthProvider;
import org.brickred.socialauth.AuthProviderFactory;
import com.auth.form.AuthForm;
public class SocialAuthenticationAction extends Action {
final Log LOG = LogFactory.getLog(SocialAuthenticationAction.class);
@Override
public ActionForward execute(final ActionMapping mapping,
final ActionForm form, final HttpServletRequest request,
final HttpServletResponse response) throws Exception {
AuthForm authForm = (AuthForm) form;
String id = authForm.getId();
System.out.println("in authentieavtaonsdfsaf");
AuthProvider provider = AuthProviderFactory.getInstance(id);
String returnToUrl = RequestUtils.absoluteURL(request,"/socialAuthSuccessAction.do").toString();
authForm.setProvider(provider);
String url = provider.getLoginRedirectURL(returnToUrl);
LOG.info("Redirecting to: " + url);
if (url != null) {
ActionForward fwd = new ActionForward("openAuthUrl", url, true);
return fwd;
}
return mapping.findForward("failure");
}
}
这里的行号23是异常触发空指针异常说,供应商就要为空
ERROR MSG ::
2011年1月23日上午12点26分23秒组织.apache.catalina.core.StandardWrapperValve 调用重度:Servlet.service()用于 servlet的动作抛出异常 显示java.lang.NullPointerException在 java.util.Properties $ LineReader.readLine(未知 源)处 org.brickred.socialauth.AuthProviderFactory.getInstance(AuthProviderFactory.java:72 java.util.Properties.load0(未知 源)在 java.util.Properties.load(未知 源)) 在 com.auth.actions.SocialAuthenticationAction.execute(SocialAuthenticationAction.java:31) 在 org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419) 在 org.apache.struts.action。 RequestProcessor.process(RequestProcessor.java:224) at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194) at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:707) 在 javax.servlet.http.HttpServlet.service (HttpServlet.java:820) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) 在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 在 org.apache.catalina .core.StandardEngineValve.invoke(StandardEngineValve.java:109) 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) 在 org.apache.coyote.http11.Http11Processor.process(Http11Processor .java:857) at org.apache.coyote.http11.Http11Protocol $ Http11ConnectionHandler.process(Http11Protocol。Java的:588) 在 org.apache.tomcat.util.net.JIoEndpoint $ Worker.run(JIoEndpoint.java:489) 在java.lang.Thread.run(未知 来源)
@ckuethbach我试图在本地运行这个应用程序,但我配置时遇到了问题。在为twitter生成oauth密钥时,我给出了返回url作为网站的地址,例如:www.xyz.com。所以twitter正在返回在那个地址的响应,但我想在本地主机运行。我allready修改我的主机文件指向本地主机www.xyz.com。但仍然得到同样的问题。 – 2011-01-24 16:23:15