jakarta-ee - Google API 授权代码流程

标签 jakarta-ee jboss google-api jboss7.x

我真的很难让一个简单的 Google OAuth 事务顺利进行。我使用 Java EE,在 JBoss v7.1 上运行,并在 Eclipse Indigo 中进行编程。

这是代码。它所做的就是在您访问/index 时运行 servlet,并且它应该建立一个 AuthorizationCodeFlow。事实并非如此;代码挂起(上传到服务器时)

    privateAuthorizationCodeFlow flow;

.

    package com.pjm.servlets;

    import java.io.IOException;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import com.google.api.client.auth.oauth2.AuthorizationCodeFlow;

    @WebServlet("/index")
    public class IndexController extends HttpServlet {          
        private static final String clientId = "1234.apps.googleusercontent.com";
        private static final String clientSecret = "12345abcde";
        private static final String callbackUrl = "http://localhost:8080/ProjectA/callback";
        private AuthorizationCodeFlow flow;

        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {       
            String url =        flow.newAuthorizationUrl().setState("xyz").setRedirectUri("https://client.example.com/rd").build();
        }

这是异常日志的简短版本:

    EXCEPTION

    javax.servlet.ServletException: Servlet execution threw an exception

    ROOT CAUSE

    java.lang.NoClassDefFoundError: com/google/api/client/auth/oauth2/AuthorizationCodeFlow
    com.pjm.servlets.IndexController.doGet(IndexController.java:30)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:734)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:847)

    ROOT CAUSE

    java.lang.ClassNotFoundException: com.google.api.client.auth.oauth2.AuthorizationCodeFlow from [Module "deployment.PmWebProjectB.war:main" from Service Module Loader]
    org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:190)
    org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:468)
    org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:456)
    org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:423)
    org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398)           org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:120)
    com.pjm.servlets.IndexController.doGet(IndexController.java:30)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:734)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:847)

看起来我没有将正确的 jar 文件上传到正确的位置,但我已经按照惯例将它们上传到了 Eclipse 中,这看起来很高兴。任何建议将不胜感激!

最佳答案

您的 jar 在 jboss 上不可用。您如何通过 eclipse 将应用程序部署到 jboss 或将项目导出为 jar(如果是,那么您需要在创建 war 时添加 jar)?

关于jakarta-ee - Google API 授权代码流程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10997207/

相关文章:

java - Struts2 应用程序在浏览时显示空白页面

java - JDBC 连接池说明

java - 在 jboss-web.xml 中使用属性/变量

java - 使用 Google Sheets Api 时出错

eclipse - 在 eclipse 中设置 Spring 和 Tomcat?

java - JBoss 6.4.20 补丁中允许使用哪些版本的 Jackson?

java - 类转换异常 : com. sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl

javascript - 未捕获的安全错误 : Blocked a frame with origin "https://www.google.com" from accessing a frame with origin "http://my.site.com".

android - 我可以在我的应用程序中使用 Google Places intent 吗?

jakarta-ee - Tomcat 服务器未在 X 秒内启动