Как я могу перечислить группы Google в моем домене и перечислить их участников? - PullRequest
0 голосов
/ 22 ноября 2011

Я хочу перечислить группы (и их участников), которые доступны в моем домене Google Apps для бизнеса, но у меня возникают проблемы с поиском подходящего API.Все, что доступно на странице документации , похоже, предполагает, что я уже знаю имя группы - и даже тогда нет способа перечислить членов.

Предыдущая версия API, gdata, имеет понятный интерфейс для всего, что я собираюсь сделать - но он не предоставляет пакет Maven (на самом деле в нем явно указано, что такой пакет не будет предоставлен ), и команда разработчиков предполагая, что новый интерфейс предпочтительнее .

Так можно ли перечислять группы с помощью Google API так же, как это было возможно с GDATA API?

1 Ответ

0 голосов
/ 23 ноября 2011

Я наконец-то узнал, как это сделать. Базовый код, включая аутентификацию:

public class GroupLister {
    static HttpTransport transport = new NetHttpTransport();
    static HttpParser parser = new AtomParser(new XmlNamespaceDictionary());

    public GroupFeed listGroups(String domainName, String apiKey,
            String username, String password) throws IOException {
        HttpRequestFactory factory = createRequestFactory(transport, username,
                password);
        GoogleUrl url = new GoogleUrl(
                "https://apps-apis.google.com/a/feeds/group/2.0/" + domainName);
        url.key = apiKey;
        return factory.buildGetRequest(url).execute().parseAs(GroupFeed.class);
    }

    public HttpRequestFactory createRequestFactory(
            final HttpTransport transport, final String username,
            final String password) {
        return transport.createRequestFactory(new HttpRequestInitializer() {
            public void initialize(HttpRequest request) throws IOException {
                request.addParser(parser);
                ClientLogin authenticator = new ClientLogin();
                authenticator.transport = transport;
                authenticator.authTokenType = "apps";
                authenticator.username = username;
                authenticator.password = password;
                request.getHeaders().setAuthorization(
                        authenticator.authenticate()
                                .getAuthorizationHeaderValue());
            }
        });
    }

}

Классы данных:

public class GroupFeed {
    @Key
    public Date updated;
    @Key("entry")
    public List<GroupEntry> groups;
}

public class GroupEntry {
    @Key
    public String id;
    @Key("apps:property")
    public List<PropertyEntry> properties;
}

public class PropertyEntry {
    @Key("@name")
    public String name;
    @Key("@value")
    public String value;
}

Это заняло много проб и ошибок.

...