使用 X509Certificate2 找不到指定的对象

Can not find the specified object with X509Certificate2

我正在尝试加载一个文件,其中包含用于访问 Google Calendar API 的密钥。 Following this tutorial. 为此,我创建了以下代码:

var certificate = new X509Certificate2("client_secret.json", "notasecret", X509KeyStorageFlags.Exportable);

我已经在我的解决方案中上传了 client_secret.json 文件,这是文件的路径:"...\Visual Studio 2015\Projects\Calendar\Calendar\bin\Debug\client_secret.json"

但是代码似乎无法找到文件并且 return 这个错误:

Can not find the specified object with X509Certificate2

我还设置了 属性 Always copy on Copy in the output directory 要读取的文件。

尝试使用MachineKeySet。这意味着需要使用本地计算机存储密钥:

var certificate = new X509Certificate2("client_secret.json", "notasecret", X509KeyStorageFlags.Exportable | X509KeyStorageFlags.MachineKeySet);

经过一番“头痛”之后,我能够理解哪里出了问题,正如我在评论中所说,我通过以下方式生成证书:

The first step that I did is create the API for Google Calendar, later I clicked on "create credentials" and selected "Service account", choosing the API that I've created before and the key type as json.

此证书与 X509Certificate2 等待的密钥不同,因此正确的步骤是:

1。单击开发人员控制台上的管理服务帐户,此工作位于凭据选项卡的右侧,就在您的项目列表旁边。

2。出现一个新的window,您需要点击您要创建密钥的项目旁边的三个点。 (三个点在右边)。

3。出现一个弹出菜单,然后,您需要单击 Create Key

4。选择P12格式,然后点击创建。

5。将下载的文件保存到一个文件夹中,并将它们 link 保存在您的代码中,特别是:

var certificate = new X509Certificate2(@"C:\key.p12", "notasecret", X509KeyStorageFlags.Exportable | X509KeyStorageFlags.MachineKeySet);

注意key.p12是证书的文件名,notasecret是第4步后面出现的默认密码,也就是关联的密码到证书。

所以我的代码似乎找到了文件并正确读取它而没有显示任何错误。

无论如何要感谢 MegaTron 让我怀疑证书有什么不对。