【问题标题】:Create gmail account for a domain using Google Admin SDK Directory API in Java使用 Java 中的 Google Admin SDK Directory API 为域创建 gmail 帐户
【发布时间】:2014-10-12 13:32:02
【问题描述】:

如何使用 Google Admin SDK Directory API 在 Java 中为域创建 gmail 帐户?某处有例子吗?关于这个问题,Google 文档很糟糕。

马科斯

【问题讨论】:

    标签: java google-admin-sdk


    【解决方案1】:

    这是一个基本示例,展示了如何使用 Admin SDK (https://developers.google.com/admin-sdk/directory/v1/reference/users/insert) 的 Directory API 创建用户。我没有包含 OAuth 2 初始化代码,因为这是相当标准的并且类似于其他 Google API。您需要使用 OAuth 凭据初始化 Directory 实例,这取决于您使用的应用程序类型(独立或 App Engine),请看这里 (https://code.google.com/p/google-api-java-client/source/browse/?repo=samples) 有很多其他 API 示例涵盖了 App Engine和独立的应用程序。在这种情况下,OAuth 凭据初始化应该非常相似。

    您需要从这里 (https://developers.google.com/api-client-library/java/apis/admin/directory_v1) 下载最新的 Admin SDK jar 或包含以下 maven 依赖项

    <dependency>
         <groupId>com.google.apis</groupId>
         <artifactId>google-api-services-admin</artifactId>
         <version>directory_v1-rev32-1.16.0-rc</version> 
    </dependency>
    

    这是 Java 示例

    import java.io.IOException;
    import java.security.GeneralSecurityException;
    
    import com.google.api.client.auth.oauth2.Credential;
    import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
    import com.google.api.client.http.HttpTransport;
    import com.google.api.client.json.JsonFactory;
    import com.google.api.client.json.jackson2.JacksonFactory;
    import com.google.api.services.admin.directory.Directory;
    import com.google.api.services.admin.directory.model.User;
    import com.google.api.services.admin.directory.model.UserName;
    
    public class DirectoryUtils {
    
        /** Global instance of the JSON factory. */
        private static final JsonFactory JSON_FACTORY = JacksonFactory.getDefaultInstance();
    
        /** Global instance of the HTTP transport. */
        private static HttpTransport httpTransport;
    
        public static Directory initDirectory() throws GeneralSecurityException, IOException {
            httpTransport = GoogleNetHttpTransport.newTrustedTransport();
    
            Credential credential = null; // TODO initialize credentials
    
            Directory directory = new Directory.Builder(httpTransport, JSON_FACTORY, credential)
            .setApplicationName("My App Name")
            .build();
    
            return directory;
        }
    
        public static User createUser(Directory directory) throws IOException {
            User user = new User();
            // populate are the required fields only
            UserName name = new UserName();
            name.setFamilyName("Blogs");
            name.setGivenName("Jo");
            user.setName(name);
            user.setPassword("password101");
            user.setPrimaryEmail("jo.blogs@example.com");
    
            // requires DirectoryScopes.ADMIN_DIRECTORY_USER scope  
            user = directory.users().insert(user).execute();
    
            return user;
        }
    }
    

    重要

    您需要确保 OAuth 令牌由具有域访问权限且可以从管理面板创建域用户的人获得。您还需要确保您的客户 ID 可以访问以下范围 (https://www.googleapis.com/auth/admin.directory.user)。要添加此导航到管理面板 → 更多控制 → 安全 → 高级设置 → 管理 OAuth 客户端访问,然后输入您的客户端 ID 和上述范围

    【讨论】:

    • 谢谢。我会看看这个。
    • 抱歉这个愚蠢的问题,但由于我是新手,Directory.Builder 中的应用程序名称是什么?只是我可以提供的任意名称还是真实的应用程序名称?如果它是一个真实的应用程序名称,这是什么应用程序,它来自哪里?我必须在某处创建和注册应用程序吗?
    • 我认为它被 Google 用于记录目的,所以任何字符串都可以
    • 在我的管理面板中只有两个图标:用户和组。更多控件选项为空,因此那里没有安全图标。我不知道为什么。我是否必须添加一些配置才能显示安全选项?如何将其添加到我的管理面板?
    • 在 Google Developers Console 中,我生成了用于公共 api 访问的 API KEY。此 api 密钥长度为 39 个字符。您能在如何创建引用此密钥的 .p12 文件的过程中帮助我吗?我在尝试实现这一目标时遇到了麻烦。
    猜你喜欢
    • 2015-09-23
    • 1970-01-01
    • 2015-04-01
    • 2021-06-22
    • 2013-07-27
    • 1970-01-01
    • 1970-01-01
    • 2013-06-06
    • 1970-01-01
    相关资源
    最近更新 更多