发现一段时间来创建一个小样本应用程序。你可以在github找到代码。
你说你不想使用client_secrets.json。我发现的唯一快速解决方案是通过记忆流提供必要的东西 - 可能有更好的方法。
大部分的认证和云DNS客户端在这些线路
using (var memstream = new MemoryStream())
{
// Ugly way of providing clientId & Secret inmemory
var writer = new StreamWriter(memstream);
writer.Write(@"{""installed"":{""auth_uri"":""https://accounts.google.com/o/oauth2/auth"",""client_secret"":""");
writer.Write(clientSecret);
writer.Write(@""",""token_uri"":""https://accounts.google.com/o/oauth2/token"",""client_email"":"""",""redirect_uris"":[""urn:ietf:wg:oauth:2.0:oob"",""oob""],""client_x509_cert_url"":"""",""client_id"":""");
writer.Write(clientId);
writer.Write(@""",""auth_provider_x509_cert_url"":""https://www.googleapis.com/oauth2/v1/certs""}}");
writer.Flush();
memstream.Position = 0;
credential = await GoogleWebAuthorizationBroker.AuthorizeAsync(
GoogleClientSecrets.Load(memstream).Secrets,
new[] { DnsService.Scope.NdevClouddnsReadwrite},
"user", CancellationToken.None, new FileDataStore("Books.ListMyLibrary"));
}
// Create the service.
var service = new DnsService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = "Cloud DNS API Sample",
});
的例子没有任何良好的编程风格(我可以用一个JSON lib和我可以使用包裹作家),但完成样品应该工作。 我希望这有助于让你走上正轨。
编辑:我删除了样本中使用的客户端ID和密码,因此您需要用自己的代码替换这些代码以使代码正常工作。
你介意描述你的应用程序实际在做什么吗?根据您的使用情况,您可能需要使用服务帐户 - 这些服务帐户相对易于使用。如果你需要社区的帮助,我还建议发布你迄今为止所做的工作。 – konqi
@ konqi - 感谢您的回复。该应用程序将负责添加域(注册/创建)以及添加/更新DNS记录。用户还应该能够删除其域名或删除记录,并列出需要使用的DNS服务器,例如:“ns1.google.ca”,“ns2.google.ca” - 谷歌设置的DNS服务器(例如)GoDaddy或他们通过域名购买域名的用户必须向其域名申请的记录。 –
那么用户将使用他们自己的帐户访问云端DNS或者这是一个提供的服务(您将在您的帐户中为他们托管DNS)?我的问题主要是为了了解谁将会被认证。在第一个用例中,您基本上为CloudDNS设置创建了一个UI。在后一种情况下,你会成为服务提供者。 – konqi