java - 使用 Java 中的 Google Admin SDK Directory API 为域创建 Gmail 帐户

标签 java google-admin-sdk

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

马科斯

最佳答案

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

您需要从此处下载最新的 Admin SDK jar ( https://developers.google.com/api-client-library/java/apis/admin/directory_v1 ) 或包含以下 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("<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="f99396d79b95969e8ab99c81989489959cd79a9694" rel="noreferrer noopener nofollow">[email protected]</a>");

        // requires DirectoryScopes.ADMIN_DIRECTORY_USER scope  
        user = directory.users().insert(user).execute();

        return user;
    }
}

重要

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

关于java - 使用 Java 中的 Google Admin SDK Directory API 为域创建 Gmail 帐户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25383591/

相关文章:

google-admin-sdk - 使用域 API 将别名添加到辅助域

google-admin-sdk - 如何使用 google-api-ruby-client 创建具有管理目录 api 的用户?

java - Jetty,isSecure() 在 HTTPS 连接上返回 false

java - 如何在 Java 中使用 Mongodb 连接池

java - 输出中的第一行

java - GQL 存在性查询 : Get vs. 键查询与实体查询

java - Hibernate 中的 MSSQL 用户定义数据类型(缺少列异常)

python-2.7 - 将 Oauth2 用于服务帐户(教育版)的 Google Python Admin SDK -"oauth2client.client.AccessTokenRefreshError: access_denied"异常

google-apps-script - 使用 Google Apps 脚本从 Admin Directory API 按部门获取用户

google-admin-sdk - 当某个 Google 群组是另一个 Google 群组的成员时返回的类型 EXTERNAL