Я использую API Google Analytics, и я выполнил этот вопрос SO, чтобы настроить OAuth: qaru.site/info/52157/...
Вот мой код OAuth:
public void SetupOAuth ()
{
var Cert = new X509Certificate2(
PrivateKeyPath,
"notasecret",
X509KeyStorageFlags.Exportable);
var Provider = new AssertionFlowClient(GoogleAuthenticationServer.Description, Cert)
{
ServiceAccountId = ServiceAccountUser,
Scope = ApiUrl + "analytics.readonly"
};
var Auth = new OAuth2Authenticator<AssertionFlowClient>(Provider, AssertionFlowClient.GetState);
Service = new AnalyticsService(Auth);
}
PrivateKeyPath - это путь к файлу закрытого ключа, предоставленному Google API Console. Это отлично работает на моей локальной машине, но когда я подталкиваю ее на наш тестовый сервер, я получаю
System.Security.Cryptography.CryptographicException: An internal error occurred.
со следующей трассировкой стека (ненужные части удалены):
System.Security.Cryptography.CryptographicException.ThrowCryptographicException(Int32 hr) +33
System.Security.Cryptography.X509Certificates.X509Utils._LoadCertFromFile(String fileName, IntPtr password, UInt32 dwFlags, Boolean persistKeySet, SafeCertContextHandle& pCertCtx) +0
System.Security.Cryptography.X509Certificates.X509Certificate.LoadCertificateFromFile(String fileName, Object password, X509KeyStorageFlags keyStorageFlags) +237
System.Security.Cryptography.X509Certificates.X509Certificate2..ctor(String fileName, String password, X509KeyStorageFlags keyStorageFlags) +140
Metrics.APIs.GoogleAnalytics.SetupOAuth() in <removed>\Metrics\APIs\GoogleAnalytics.cs:36
Metrics.APIs.GoogleAnalytics..ctor(String PrivateKeyPath) in <removed>\Metrics\APIs\GoogleAnalytics.cs:31
Итак, похоже, что у него возникли проблемы с загрузкой файла. Я проверил PrivateKeyPath, который был передан, и он указывает на правильное местоположение.
Любые идеи? Я не знаю, если это проблема с сервером, файлом, кодом или чем-то.