Поддерживает ли API переноса электронной почты Google Apps 2-сторонний oAuth?

Я пытаюсь разработать приложение winform, используя API переноса электронной почты Служб Google. Я также хочу использовать oAuth на 2-х ножках.

Я успешно использовал двухсторонний oAuth с API данных контактов. Для этого я установил область действия API "http(s)://www.google.com/m8/feeds/" на странице "Управление доступом к клиентскому API". (Http://www.google.com/support/a/bin/answer.py?hl=en&answer=162106)

Для API миграции электронной почты я установил область действия как "https://apps-apis.google.com/a/feeds/migration". Но я получаю сообщение об ошибке "401: неавторизованный доступ".

Мой код примерно такой:

            GOAuthRequestFactory requestFactory = new GOAuthRequestFactory("MailItemService", "company-application-v1");
            requestFactory.ConsumerKey = "domainname";
            requestFactory.ConsumerSecret = "consumersecret";

            MailItemService mailItemService = new MailItemService("domainname", "company-application-v1");
            mailItemService.RequestFactory = requestFactory;
            MailItemEntry entry = new MailItemEntry();
            entry.Rfc822Msg = new Rfc822MsgElement(rfcTextOfMessage);

            entry.MailItemProperties.Add(MailItemPropertyElement.STARRED);
            entry.MailItemProperties.Add(MailItemPropertyElement.UNREAD);
            entry.MailItemProperties.Add(MailItemPropertyElement.INBOX);
            entry.Labels.Add(new LabelElement("Friends"));
            entry.Labels.Add(new LabelElement("Event Invitations"));
            entry.BatchData = new GDataBatchEntryData();
            entry.BatchData.Id = "0";
            MailItemEntry[] entries = new MailItemEntry[1];
            entries[0] = entry;
            MailItemFeed feed = mailItemService.Batch("domainname", user, entries);

Как мы можем реализовать двухсторонний oAuth с API переноса электронной почты.

Спасибо!

2 ответа

Чтобы использовать двухсторонний OAuth в OAuth 1.0a, необходимо указать, кто выполняет действие. Это пользователь, который API проверит на предмет правильного доступа. Поскольку ключ и секрет потребителя дают полный доступ к вашему домену, вы можете выдать себя за любого пользователя и сделать так, чтобы запрос прошел через него.

В случае API переноса электронной почты вам необходимо выдать себя за пользователя, на которого вы переносите электронные письма. Установите для параметра URL "xoauth_requestor_id" полный адрес электронной почты пользователя, и запросы должны пройти.

Область применения:

https://apps-apis.google.com/a/feeds/migration/

вы пропустили последний / в вашем коде. Кроме того, если вы используете первичный ключ OAuth домена Служб Google (ключ является основным доменом), но переходите на пользователя вторичного домена, вам необходимо либо вручную предоставить доступ к первичному ключу OAuth всем доменам, либо настроить сторонний клиент OAuth. Руководство администратора для инструмента миграции Google Exchange описывает, как это настроить:

http://static.googleusercontent.com/external_content/untrusted_dlcp/www.google.com/en/us/support/enterprise/static/gapps/docs/admin/en/gapps_exchange_migration/gamme_admin.pdf

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