Не удается удалить контакты из учетной записи пользователя домена Служб Google в Linux

Используя клиентские библиотеки google-gdata, я могу добавить контакты в аккаунт Google / GMail
но когда я пытаюсь удалить их, я получаю два разных результата в зависимости от типа учетной записи.

Если целевой учетной записью является чистая учетная запись GMail, я могу удалить контакты, но она не удаляется.
все контакты за один раз. Иногда возвращается несколько, иногда до 25, хотя я проверяю
если есть еще контакты и зацикливаться на них.

Когда целевой учетной записью является учетная запись Служб Google, я просто получаю тайм-аут (примерно через 2 минуты)
Обратите внимание, что даже для учетной записи Служб Google я могу добавлять контакты.

let service = new ContactsService("ContactSync")
service.setUserCredentials(username, password)

let token = service.QueryClientLoginToken()
service.SetAuthenticationToken(token)

let uri = ContactsQuery.CreateContactsUri("default")
let query = new ContactsQuery(uri)

let rec DeleteAllGoogleContacts (query : ContactsQuery) =
    let feed = service.Query(query) : ContactsFeed

    feed.Entries 
    |> List.ofSeq
    |> List.iter(fun f -> f.Delete())

    match feed.NextChunk with
    | x when String.IsNullOrWhiteSpace(x) -> ()
    | _ -> DeleteAllGoogleContacts(new ContactsQuery(feed.NextChunk)) 

DeleteAllGoogleContacts(query)

Ошибка для аккаунта Служб Google: (адрес электронной почты изменен для конфиденциальности):

Google.GData.Client.GDataRequestException: выполнение запроса не удалось: https://www.google.com/m8/feeds/contacts/email@domain.com/full/22280c0f9f627f ---> System.Net.WebException: запрос истекло время ожидания в System.Net.HttpWebRequest.EndGetResponse (IAsyncResult asyncResult) [0x00000] в:0 в System.Net.HttpWebRequest.GetResponse () [0x00000] в:0 в Google.GData.Client.Gxecute (0x0000) ] в:0 --- Конец трассировки стека внутренних исключений --- в Google.GData.Client.GDataRequest.Execute () [0x00000] в:0 в Google.GData.Client.GDataGAuthRequest.Execute (Int32 retryCounter) [0x00000] в:0

когда DeleteAllGoogleContacts сначала называется, это удастся получить корм
и количество записей меньше или равно 25. Тайм-аут происходит после вызова f.Delete()

Обратите внимание, что, насколько мне известно, я не могу использовать OAuth здесь, потому что он будет работать на автономном сервере без взаимодействия с пользователем.

Обновить:

Я обнаружил, что есть другой способ получить контакты

let Delete() =
    let requestSettings = new RequestSettings("ContactSync", username, password)
    requestSettings.AutoPaging <- true

    let contactsRequest = new ContactsRequest(requestSettings)

    let feed = contactsRequest.GetContacts() : Feed<Contact>
    feed.Entries
    |> List.ofSeq
    |> List.iter(fun f -> contactsRequest.Delete(f))

Это возвращает все контакты за один раз, но я все еще получаю тайм-аут после удаления ()

Обновление 2:

Это может быть связано с брандмауэром, так как я могу заставить его работать из другой сети. Если так, я удалю вопрос, так как он не актуален.

Обновление 3:

Кажется, это не вызвано брандмауэром.
При запуске этого в Windows с.NET все работает, как ожидалось.
При запуске этого в Linux с последними версиями Mono и FSharp, скомпилированными из исходного кода,
мы получаем исключение тайм-аута.

Мое единственное предположение здесь - то, что это имеет отношение к сертификатам SSL.
Например, если вы хотите получить доступ к SMTP GMail в Linux, вы должны выполнить следующие команды:

mozroots --import --ask-remove
certmgr --ssl smtps://smtp.gmail.com:465

Иначе это не сработает. Возможно, мне нужно сделать что-то подобное для API GData?

Обновление 4:

Глядя на конечные точки для Update() а также Delete()видишь, они одно и то же

https://www.google.com/m8/feeds/contacts/userEmail/full/{contactId}

Единственное отличие - используемый HTTP-глагол: PUT против UPDATEи я подтвердил
что Update() работает на обеих платформах для обеих целей (Windows/Linux), (GMail, Google Apps)

На рисунке ниже показаны 4 различных сценария удаления ():

введите описание изображения здесь

0 ответов

Другие вопросы по тегам