Мне нужно создать экземпляр DatastoreClient, в котором путь к моему файлу аутентификации .json передается в коде. Как я могу сделать это для Datastore? Это код, который я пытаюсь использовать - он не компилируется, потому что у меня нет пространства имен для метода ToChannelCredentials (), на который есть ссылка (я не уверен, можно ли его использовать в этом случае для начала):
Как установить учетные данные для речи Google в текст без настройки переменной среды?
GoogleCredential googleCredential;
using (Stream m = new FileStream(jsonPath, FileMode.Open))
googleCredential = GoogleCredential.FromStream(m);
var channel = new Grpc.Core.Channel(DatastoreClient.DefaultEndpoint.Host,
googleCredential.ToChannelCredentials());
var dataStore = DatastoreClient.Create(channel);
Я также использую облачное хранилище для своего проекта, и для этой части сработало решение из пошагового руководства Google.
https://cloud.google.com/docs/authentication/production
// Some APIs, like Storage, accept a credential in their Create()
// method.
public object AuthExplicit(string projectId, string jsonPath)
{
// Explicitly use service account credentials by specifying
// the private key file.
var credential = GoogleCredential.FromFile(jsonPath);
var storage = StorageClient.Create(credential);
// Make an authenticated API request.
var buckets = storage.ListBuckets(projectId);
foreach (var bucket in buckets)
{
Console.WriteLine(bucket.Name);
}
return null;
}
// Other APIs, like Language, accept a channel in their Create()
// method.
public object AuthExplicit(string projectId, string jsonPath)
{
var credential = GoogleCredential.FromFile(jsonPath)
.CreateScoped(LanguageServiceClient.DefaultScopes);
var channel = new Grpc.Core.Channel(
LanguageServiceClient.DefaultEndpoint.ToString(),
credential.ToChannelCredentials());
var client = LanguageServiceClient.Create(channel);
AnalyzeSentiment(client);
return 0;
}