簡體   English   中英

如何驗證用於Dialogflow集成的Google憑據

[英]How to authenticate Google Credentials for Dialogflow Integration

我想將我的C#系統與Google Dialogflow集成。 因此,我正在嘗試使用喬恩先生在此處向我展示的代碼:

如何使用API​​導入dialogflow zip

但是我遇到了這個問題:

應用程序默認憑據不可用。 如果它們在Google Compute Engine中運行,則可用。 否則,必須定義環境變量GOOGLE_APPLICATION_CREDENTIALS,指向指向定義憑據的文件。 有關更多信息,請參見https://developers.google.com/accounts/docs/application-default-credentials

我已經下載了Dialogflow項目服務帳戶密鑰JSON文件。 我正在嘗試使用以下代碼進行身份驗證:

// Some APIs, like Storage, accept a credential in their Create() method.
// Explicitly use service account credentials by specifying the private key file.
GoogleCredential credential = GoogleCredential.FromFile(theServiceAccountJSONFilePath);
StorageClient storage = StorageClient.Create(credential);
// Make an authenticated API request.
PagedEnumerable<Buckets, Bucket> buckets = storage.ListBuckets(theProjectID);
foreach (Bucket bucket in buckets)
{
    Console.WriteLine(bucket.Name);
}
return null;

我從以下鏈接獲得了該代碼: 為服務器到服務器生產應用程序設置身份驗證

問題是代碼對我來說遇到了這個問題:

dialogflow-ixksso@maintest-vskxxy.iam.gserviceaccount.com沒有對項目160007643358的storage.buckets.list訪問。

我可以在“ Google雲平台”上使用免費選項。 也許free選項不允許以這種方式進行身份驗證。

我對此沒有很多經驗,所以任何建議都將不勝感激。

如評論中所述,在大多數情況下,最簡單的方法是指定GOOGLE_APPLICATION_CREDENTIALS環境變量以引用JSON文件。

如果您需要以其他方式加載憑據,則可以使用客戶端構建器靈活地指定憑據:

來自憑證

ICredential credential = LoadCredentialFromSomewhere();
var client = new AgentsClientBuilder
{
    TokenAccessMethod = credential.GetAccessTokenForRequestAsync 
}.Build();

從JSON文件的路徑

var client = new AgentsClientBuilder
{
    CredentialsPath = "/path/to/serviceaccount.json"
}.Build();

通過JSON,您已經擁有一個字符串

string json = LoadJsonFromSomewhere();
var client = new AgentsClientBuilder
{
    JsonCredentials = json
}.Build();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM