Как передать служебный ключ учетной записи в .NET без использования переменной среды? - PullRequest
0 голосов
/ 01 ноября 2018

Мне нужно создать экземпляр 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...