Я пытаюсь использовать общедоступный календарь Google на веб-странице, для которой потребуются функции редактирования. Для этого я создал календарь и сделал его общедоступным. Затем я создал учетную запись службы Google и соответствующий идентификатор клиента. Я также включил API календаря и добавил в проект DLL версии 3. Я скачал сертификат p12 и тут начались проблемы.
Звонок в Google идет с сертификатом X509, но структура .NET построена так, что она использует временную папку пользователя. Поскольку это общий хост для веб-сервера (GoDaddy), я не могу изменить идентификатор пула приложений. В результате я получаю эту ошибку:
System.Security.Cryptography.CryptographicException: система не может найти указанный файл.
при вызове:
X509Certificate2 certificate = new X509Certificate2(GoogleOAuth2CertificatePath,
"notasecret", X509KeyStorageFlags.Exportable);
этот сертификат var затем будет использоваться в вызове Google:
ServiceAccountCredential credential = new ServiceAccountCredential(
new ServiceAccountCredential.Initializer(GoogleOAuth2EmailAddress)
{
User = GoogleAccount,
Scopes = new[] { CalendarService.Scope.Calendar }
}.FromCertificate(certificate));
... но я никогда не захожу так далеко.
Вопрос: есть ли способ сделать вызов по-другому, т.е. использовать не сертификат X509, а JSON? Или я могу заставить функцию x509 использовать общее временное местоположение, а не местоположение пользователя, к которому у меня нет доступа, поскольку я не могу изменить личность в пуле приложений?
Поскольку я полностью застрял, любая помощь будет оценена по достоинству.
Assembly.GetManifestResourceStream
для загрузки данных... - person Jon Skeet   schedule 23.09.2016