私は Google アナリティクス API を使用しており、この SO の質問に従って OAuth を設定しました: https://stackoverflow.com/a/13013265/1299363
ここに私の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 コンソールによって提供される秘密鍵ファイルのパスです。これは私のローカル マシンでは完全に機能しますが、テスト サーバーにプッシュすると、
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 を確認しましたが、正しい場所を指しています。
何か案は?これがサーバー、ファイル、コードなどの問題なのかどうかはわかりません。