【问题标题】:What is the corect version of google-api-client for use with Admin SDK API?与 Admin SDK API 一起使用的 google-api-client 的正确版本是什么?
【发布时间】:2021-11-23 00:18:20
【问题描述】:

我正在尝试执行此 google 的目录 api 以从我的应用程序中注销用户。 这是一个 POST 调用

POST https://admin.googleapis.com/admin/directory/v1/users/{userKey}/signOut

userkey 必须是 userEmail。

    private String m_strGoogleAdmin = null;

    public void TestSignout(String domain, String adminEmail, String p_strServiceAccountEmail,
            String p_strServiceAccountPkcs12FilePath, Boolean isAllScopes) {
        Collection<String> SCOPES = new ArrayList<String>();

        SCOPES = getScopes(isAllScopes);

        String pstr_AdminEmail = null;
        Configuration configObj = new GLoginManager(domain).getConfiguration();
        if (configObj != null && (configObj.getAdminEmail() != null && !(configObj.getAdminEmail().isEmpty()))) {
            pstr_AdminEmail = configObj.getAdminEmail();
        } else {
            pstr_AdminEmail = adminEmail;
        }

        HttpTransport httpTransport = new NetHttpTransport();
        
        JacksonFactory jsonFactory = new JacksonFactory();

        GoogleCredential credential = null;
        try {
            credential = new GoogleCredential.Builder().setTransport(httpTransport).setJsonFactory(jsonFactory)
                    .setServiceAccountId(p_strServiceAccountEmail).setServiceAccountScopes(SCOPES)
                    .setServiceAccountUser(pstr_AdminEmail) // adminEmail
                    .setServiceAccountPrivateKeyFromP12File(new java.io.File(p_strServiceAccountPkcs12FilePath))
                    .build();
            m_directoryService = new com.google.api.services.directory.Directory.Builder(httpTransport, jsonFactory, credential)
                    .setApplicationName("Directory ").build();//
            m_strGoogleAdmin = pstr_AdminEmail; // adminEmail
        } catch (Exception e) {
            ErrorHandler.errorHandler(this.getClass().getName(), e);
        }
    }
private Collection<String> getScopes(Boolean isAllScopes) {

        Collection<String> SCOPES = new ArrayList<String>()

        SCOPES.add("https://www.googleapis.com/auth/admin.directory.user");
        SCOPES.add("https://www.googleapis.com/auth/admin.directory.orgunit");
        SCOPES.add("https://www.googleapis.com/auth/admin.directory.group");
        SCOPES.add("https://www.googleapis.com/auth/admin.directory.user.security");
        return SCOPES;
    }

我认为我的应用程序中的 jar 可能存在冲突

  • google-api-services-admin-directory-directory_v1-rev72-1.22.0
  • google-api-services-admin-directory-directory_v1-rev20210720-1.32.1

谁能建议我如何配置我要构建目录的问题

com.google.apphosting.runtime.jetty9.JettyLogger warn: Error for /TestServletSignout (JettyLogger.java:30)
java.lang.ExceptionInInitializerError
    at com.google.api.services.directory.Directory$Builder.build(Directory.java:18690)
    at com.cloudcodes.gcontrol.backends.TestServletSignout.TestSignout(TestServletSignout.java:60)
    at com.cloudcodes.gcontrol.backends.TestServletSignout.doGet(TestServletSignout.java:71)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:848)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1780)
    at com.google.apphosting.utils.servlet.JdbcMySqlConnectionCleanupFilter.doFilter(JdbcMySqlConnectionCleanupFilter.java:60)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1767)
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:583)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:524)
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134)
    at com.google.apphosting.runtime.jetty9.ParseBlobUploadHandler.handle(ParseBlobUploadHandler.java:111)
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1182)
    at com.google.apphosting.runtime.jetty9.AppEngineWebAppContext.doHandle(AppEngineWebAppContext.java:187)
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:513)
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1112)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
    at com.google.apphosting.runtime.jetty9.AppVersionHandlerMap.handle(AppVersionHandlerMap.java:293)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134)
    at org.eclipse.jetty.server.Server.handle(Server.java:539)
    at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:333)
    at com.google.apphosting.runtime.jetty9.RpcConnection.handle(RpcConnection.java:216)
    at com.google.apphosting.runtime.jetty9.RpcConnector.serviceRequest(RpcConnector.java:81)
    at com.google.apphosting.runtime.jetty9.JettyServletEngineAdapter.serviceRequest(JettyServletEngineAdapter.java:134)
    at com.google.apphosting.runtime.RequestRunner.dispatchServletRequest(RequestRunner.java:250)
    at com.google.apphosting.runtime.RequestRunner.dispatchRequest(RequestRunner.java:215)
    at com.google.apphosting.runtime.RequestRunner.run(RequestRunner.java:180)
    at com.google.apphosting.runtime.ThreadGroupPool$PoolEntry.run(ThreadGroupPool.java:260)
    at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.IllegalStateException: You are currently running with version 1.23.0 of google-api-client. You need at least version 1.31.1 of google-api-client to run version 1.32.1 of the Admin SDK API library.
    at com.google.common.base.Preconditions.checkState(Preconditions.java:200)
    at com.google.api.client.util.Preconditions.checkState(Preconditions.java:113)
    at com.google.api.services.directory.Directory.<clinit>(Directory.java:44)
    ... 34 more```

Anyone please help me with this?????

【问题讨论】:

    标签: java google-api google-admin-sdk google-api-java-client servlet-3.0


    【解决方案1】:

    您当前使用的是 1.23.0 版的 google-api-client。您至少需要 1.31.1 版的 google-api-client 才能运行 1.32.1 版的 Admin SDK API 库

    如果您查看Setup guilde

    它显示最新的是google-api-client-1.32.1.jar 你试过更新到那个吗?

    Google APIs Client Library for Java

    【讨论】:

    • 是的,我已经更新了google-api-client-1.32.1.jar,但我仍然遇到这个问题,我已经搜索了很多例子。没有得到关于 google-admin-sdk 的此 Signout 方法的任何适当示例或任何解决方案。
    • 我可以建议您是否更新到当前的 jar,但它仍然说您需要一个更高版本的,但您没有正确升级它。
    猜你喜欢
    • 2014-11-25
    • 2013-10-25
    • 1970-01-01
    • 2013-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-30
    相关资源
    最近更新 更多