1

Я пытаюсь использовать API CardDAV Google (и я успешно получил доступ к CalDAV). К сожалению, я все время получаю ошибку 403 при попытке открыть текущий пользовательский принцип пользователя. FWIW, я пошел в консоль разработчика Google и настроил клиентскую информацию, и, похоже, он отлично работает для доступа CalDAV.Ошибка Google CardDAV API 403

Вот отрывок из HTTP-трафика для CardDAV:

PROPFIND https://www.googleapis.com:443/.well-known/carddav/ 
Depth: 0 
Content-Type: text/xml 
Brief: T 
Authorization: Bearer ya29.1.AADtN_UD1CVKpIQPsyB4HzoKVxt4L5kPFXU3GucMTfJmJj9t0pzZqX1i3Xx748Y 
<?xml version="1.0" encoding="utf-8"?> 
<x0:propfind xmlns:x0="DAV:"> 
    <x0:prop> 
    <x0:current-user-principal /> 
    <x0:principal-URL /> 
    <x0:resourcetype /> 
    </x0:prop> 
</x0:propfind> 

vvvvvvvvvvvv 

HTTP PROPFIND Status(403) Forbidden 
<?xml version="1.0" encoding="UTF-8"?> 
<errors xmlns="http://schemas.google.com/g/2005"> 
<error> 
    <domain>GData</domain> 
    <code>insufficientPermissions</code> 
    <internalReason>Insufficient Permission</internalReason> 
</error> 
</errors> 

Если кто-то имеет некоторое представление о том, почему это может происходить, это было бы весьма признателен.

Red

ответ

0

Вам нужно запросить доступ к Google CardDAV API, т.е. https://www.googleapis.com/auth/carddav

Я боюсь, что до сих пор не может быть прав достаточно, потому что даже с этого разрешения (а также разрешения на https://www.googleapis.com/auth/contacts) Я получаю пустые отчеты для моей адресной книги. Это очень странно. Даже после контакта с моим клиентом.

+0

Спасибо за ответ. Фактически, я уже запросил доступ через панель инструментов разработчика, подтвердив токен на предъявителя OAuth2. Так что, похоже, есть еще одна причина ошибки 403, когда вы ускользали. – twoputt

+0

Да, но для каких доменов? Вам нужно запросить доступ для правильных доменов, чтобы заставить работать carddav ... Для меня, когда я запросил доступ к домену «https://www.googleapis.com/auth/carddav», я больше не получал бы 403 ошибок. Но списки все равно были бы пустыми. Вероятно, @davef имеет здесь право. – Garfonso

0

Я сегодня общаюсь с этим и добился успеха именно сейчас. Я использую два OAuth областей

https://www.googleapis.com/auth/carddav

https://www.google.com/m8/feeds

я получал 403, когда только с помощью второй. Затем я делаю глубину 1 propfind на getetag, а затем multiget, чтобы получить vcards. Ответ очень быстрый.

p.s. С URL-адресом, который вы используете, вы также получите http-redirect

+0

С "multiget", вы имеете в виду ОТЧЕТ адресбук-мультигит? Я могу сделать любой PROPFIND, но ОТЧЕТНАЯ адресная книга-мультирешетка терпит неудачу с 400 плохим запросом. вы смогли запустить это против Google CardDAV? – jansokoly

Смежные вопросы