如何使用 Google.Apis.CloudScheduler.v1beta1 客户端库在 .NET 中创建作业?
How to use Google.Apis.CloudScheduler.v1beta1 client library to create jobs in .NET?
我正在尝试通过我的 Web Api 在 google 云计划中创建工作 Api。
我可以使用客户端库创建作业,但我相信它不会发布到 Google。
CloudSchedulerService cloudScheduler = new CloudSchedulerService();
IDictionary<string, string> header = new Dictionary<string, string>();
header.Add("Content-Type", "application/json");
header.Add("Authorization", "Bearer sk_test_XKokBfNWv6FIYuTMg5sLPjhJ");
HttpTarget httpTarget = new HttpTarget()
{
Body = "Check",
Headers = header,
HttpMethod = "POST",
Uri = "******"
};
Job job = new Job()
{
Description = "testing",
HttpTarget = httpTarget,
Name = "projects/******/locations/europe-west3/jobs/testjob4",
Schedule = "5 * * * *",
TimeZone = "Asia/Kuwait"
};
cloudScheduler.Projects.Locations.Jobs.Create(job, "projects/******/locations/europe-west3");
我通过使用 google 凭据和从 google 控制台创建的服务帐户解决了这个问题。
public static string[] scope =
{
CloudSchedulerService.Scope.CloudPlatform
};
public static void CreateJob()
{
GoogleCredential googleCredential = GoogleCredential.FromFile("filepath").CreateScoped(scope);
if (googleCredential != null)
{
ICredential credential = googleCredential.UnderlyingCredential;
ServiceAccountCredential serviceAccountCredential = credential as ServiceAccountCredential;
CloudSchedulerService cloudScheduler = new CloudSchedulerService(new Google.Apis.Services.BaseClientService.Initializer()
{
HttpClientInitializer = googleCredential,
GZipEnabled = false
});
IDictionary<string, string> header = new Dictionary<string, string>();
header.Add("Content-Type", "application/json");
header.Add("Authorization", "Bearer "+jobDetails.httpTarget.Authorization);
HttpTarget httpTarget = new HttpTarget()
{
Body = Base64Encode("json string"),
Headers = header,
HttpMethod = "POST",
Uri = "*********"
};
Job job = new Job()
{
Description = "",
HttpTarget = httpTarget,
Name = "projects/" + serviceAccountCredential.ProjectId + "/locations/europe-west3/jobs/" + jobId,
Schedule = "5 * * * *", //cron formate
TimeZone = "Asia/Kuwait"
};
cloudScheduler.Projects.Locations.Jobs.Create(job, "projects/" + serviceAccountCredential.ProjectId + "/locations/europe-west3").Execute();
}
}
我正在尝试通过我的 Web Api 在 google 云计划中创建工作 Api。
我可以使用客户端库创建作业,但我相信它不会发布到 Google。
CloudSchedulerService cloudScheduler = new CloudSchedulerService();
IDictionary<string, string> header = new Dictionary<string, string>();
header.Add("Content-Type", "application/json");
header.Add("Authorization", "Bearer sk_test_XKokBfNWv6FIYuTMg5sLPjhJ");
HttpTarget httpTarget = new HttpTarget()
{
Body = "Check",
Headers = header,
HttpMethod = "POST",
Uri = "******"
};
Job job = new Job()
{
Description = "testing",
HttpTarget = httpTarget,
Name = "projects/******/locations/europe-west3/jobs/testjob4",
Schedule = "5 * * * *",
TimeZone = "Asia/Kuwait"
};
cloudScheduler.Projects.Locations.Jobs.Create(job, "projects/******/locations/europe-west3");
我通过使用 google 凭据和从 google 控制台创建的服务帐户解决了这个问题。
public static string[] scope =
{
CloudSchedulerService.Scope.CloudPlatform
};
public static void CreateJob()
{
GoogleCredential googleCredential = GoogleCredential.FromFile("filepath").CreateScoped(scope);
if (googleCredential != null)
{
ICredential credential = googleCredential.UnderlyingCredential;
ServiceAccountCredential serviceAccountCredential = credential as ServiceAccountCredential;
CloudSchedulerService cloudScheduler = new CloudSchedulerService(new Google.Apis.Services.BaseClientService.Initializer()
{
HttpClientInitializer = googleCredential,
GZipEnabled = false
});
IDictionary<string, string> header = new Dictionary<string, string>();
header.Add("Content-Type", "application/json");
header.Add("Authorization", "Bearer "+jobDetails.httpTarget.Authorization);
HttpTarget httpTarget = new HttpTarget()
{
Body = Base64Encode("json string"),
Headers = header,
HttpMethod = "POST",
Uri = "*********"
};
Job job = new Job()
{
Description = "",
HttpTarget = httpTarget,
Name = "projects/" + serviceAccountCredential.ProjectId + "/locations/europe-west3/jobs/" + jobId,
Schedule = "5 * * * *", //cron formate
TimeZone = "Asia/Kuwait"
};
cloudScheduler.Projects.Locations.Jobs.Create(job, "projects/" + serviceAccountCredential.ProjectId + "/locations/europe-west3").Execute();
} }