Возможно использование учетной записи AssertionFlowClient и службы для доступа к почтовому ящику любого пользователя в моем домене через IMAP. То же, что и с 2-сторонним OAuth 1.0.Доступ к IMAP Gmail с использованием AssertionFlowClient и учетной записи службы
Вот мой код:
X509Certificate2 certificate = new X509Certificate2(...)
AuthorizationServerDescription server = new AuthorizationServerDescription {...};
List<string> scope = new List<string> {
"https://mail.google.com/",
"https://www.googleapis.com/auth/userinfo#email" };
AssertionFlowClient provider = new AssertionFlowClient(server, certificate)
{
ServiceAccountId = SERVICE_ACCOUNT_EMAIL,
Scope = string.Join(" ",scope.ToArray()),
};
IAuthorizationState grantedAccess = AssertionFlowClient.GetState(provider);
accessToken = grantedAccess.AccessToken;
using (Imap client = new Imap())
{
client.ConnectSSL("imap.gmail.com");
client.LoginOAUTH2("[email protected]", accessToken);
...
}
Я могу получить действительный маркер доступа с accounts.google.com сервера (хотя AssertionFlowClient/DotNetOpenAuth имеет ошибку, и в настоящее время я использую отладчик и посмотреть окно для его получения) ,
Я уверен, что маркер доступа правильно, как я могу запросить www.googleapis.com/userinfo/email API конечной точки, используя его - он возвращает то же значение, как SERVICE_ACCOUNT_EMAIL.
IMAP сервер Gmail возвращает следующие ошибки однако:
{"status":"400","schemes":"Bearer","scope":"https://mail.google.com/"}
"Управление доступом клиента API" для этой учетной записи службы настроен на "E-mail (чтение/запись/Отправить) https://mail.google.com/" на CPanel.
Ошибка AssertionFlowClient/DotNetOpenAuth указывает, что никто никогда не пробовал это.
Возможно ли вообще?