如何从C#访问Google云存储桶

时间:2018-11-06 10:43:34

标签: c# .net google-app-engine

我们正在尝试将Dynamics 365 FO与Google云存储集成。发生的情况是,没有内置的API将其连接到Google Cloud。

我们正在尝试在C#中使用Google Cloud API,然后在D365fo中调用c#。我被困在身份验证步骤中。我已经创建了一个类库项目,并添加了nuget包Google.Cloud.Storage.V1。我应该如何连接到OAuth2.0以获取访问令牌以访问Google Cloud?

我们如何使用C#将Google云端中的存储桶信息下载到本地文件夹?

2 个答案:

答案 0 :(得分:1)

安装并配置了SDK后,您可以通过以下方式在工作区的Google云上进行身份验证:

  1. 创建具有项目所有者权限的服务帐户

  2. 将其.json密钥下载到您的工作区

  3. 将其路径保存在环境变量中

See this link了解详细步骤。

在同一链接中有一个small script that verifies the authentication to your Google Cloud project

在该代码中注意这一行:

var credential = GoogleCredential.GetApplicationDefault();

此行获取保存在您的环境路径(之前保存的密钥路径)上的凭据,并使用它来对项目进行身份验证。

如果您执行了此操作,则应该能够对您的项目进行身份验证并运行Google Cloud API。

关于您的问题,要列出存储桶中的文件,您可以在API文档中查看this example,以及其他示例。

答案 1 :(得分:0)

string _projectId = "YOUR-PROJECT-ID-GCP"; //ProjectID also present in the json file
GoogleCredential _credential = GoogleCredential.FromFile("credential-cloud-file-123418c9e06c.json");

public IEnumerable<Google.Apis.Storage.v1.Data.Object> ListFiles(string bucketName)
{
    var storage = StorageClient.Create(_credential);
    var storageObjects = storage.ListObjects(bucketName);
    Console.WriteLine($"Files in bucket {bucketName}:");
    foreach (var storageObject in storageObjects)
    {
        Console.WriteLine(storageObject.Name);
    }

    return storageObjects;
}

您从谷歌云门户获取凭证 json 文件,您在该门户中在项目下创建了一个存储桶..