在Web应用程序中实现auth

我想在我的Web应用程序中使用auth应用程序来跳过用户的注册过程。 我正在使用http://code.google.com/p/socialauth/ java库来实现身份validation。我正面临以下问题

我已经和twitter这样的auth提供商创建了密钥。 但我在我的系统上本地运行此应用程序时遇到问题,因为我在生成密钥时提供了我的网站所需的地址。

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行显示了空指针exception,表示提供程序为null

错误味精::

2011年1月23日上午12:26:23 org.apache.catalina.core.StandardWrapperValve调用SEVERE:servlet操作的Servlet.service()在java.util.Properties引发了exceptionjava.lang.NullPointerException $ LineReader.readLine(Unknown Source )java.util.Properties.load0(未知来源)java.util.Properties.load(未知来源)atg.brickred.socialauth.AuthProviderFactory.getInstance(AuthProviderFactory.java:72)at com.auth.actions.SocialAuthenticationAction org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)的org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)org中的.execute(SocialAuthenticationAction.java:31)。 apache.struts.action.ActionServlet.process(ActionServlet.java:1194)位于org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)的javax.servlet.http.HttpServlet.service(HttpServlet.java: 707)在org.apache.catalina.core.ApplicationFilterChain.i的javax.servlet.http.HttpServlet.service(HttpServlet.java:820) numnDoFilter(ApplicationFilterChain.java:290)位于org.apache的org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)位于org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)的.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)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)org.apache.coyote.http11.Http11Protocol $ Http11ConnectionHandler.process(Http11Protocol.java:588)at org.apache.tomcat.util.net.JIoEndpoint $ Worker.run(JIoEndpoint。 java:489)at java.lang.Thread.run(Unknown Source)

AuthProvider provider = AuthProviderFactory.getInstance(id); 抛出一个NPE,因为应该加载一个不存在的属性文件: java.util.Properties.load(Unknown Source)

但我不知道,哪一个缺失。 我相信你必须包含某种属性文件。

编辑 http://code.google.com/p/socialauth/wiki/StrutsSample在此示例项目中,您可以看到名为oauth_consumer.properties的文件可能是缺少该属性文件?