[英]Authentication in Dialogflow API V2 using C#
我將履行API的.NET Web API項目作為我的Dialogflow代理中的webhook。 在我們的控制器的Post方法中,在收到Dialogflow的請求后,我實現了顯式身份驗證,如C#的Google Cloud文檔中所示。
//jsonFileName is the name of the serviceAccountKey json generated from the Google Cloud Platform that's encrypted internally
public bool AuthExplicit(string projectId, string jsonFileName)
{
try
{
string JsonCredential = DecryptHelper.Decrypt(jsonFileName);
var credential = GoogleCredential.FromJson(JsonCredential).CreateScoped(LanguageServiceClient.DefaultScopes);
var channel = new Grpc.Core.Channel(
LanguageServiceClient.DefaultEndpoint.ToString(),
credential.ToChannelCredentials());
var client = LanguageServiceClient.Create(channel);
AnalyzeSentiment(client);
if (client != null)
{
return true;
}
else
{
return false;
}
}
internal void AnalyzeSentiment(LanguageServiceClient client)
{
var response = client.AnalyzeSentiment(new Document()
{
Content = "Authenticated.",
Type = Document.Types.Type.PlainText
});
var sentiment = response.DocumentSentiment;
string score = $"Score: {sentiment.Score}";
string magnitude = $"Magnitude: {sentiment.Magnitude}";
}
與代碼的不同之處在於,在獲取客戶端之后,當我們調用AnalyzeSentiment()方法時,它不會執行任何操作,並且projectId參數永遠不會用於進行身份驗證。 GCP文檔非常混亂,因為當有一個使用projectId的AuthExplicit()時,它會將它用作存儲桶的參數,並且只在控制台上打印它。
它工作正常,直到我們使用不同的代理測試服務帳戶密鑰。 預期的輸出是認證失敗,但不知怎的,它仍然通過。
一旦Post方法通過AuthExplicit()方法,它將只返回一個布爾值。 這是驗證的正確方法嗎? 或者還有什么需要調用?
與代碼的不同之處在於,在獲取客戶端之后,當我們調用AnalyzeSentiment()方法時,它不執行任何操作,
client.AnalyzeSentiment()
是否返回空響應? 通話是否永遠掛起?
它工作正常,直到我們使用不同的代理測試服務帳戶密鑰。
什么是不同的代理人? 一個不同的User-Agent標頭?
一旦Post方法通過AuthExplicit()方法,它將只返回一個布爾值。 這是驗證的正確方法嗎? 或者還有什么需要調用?
“Post方法”指的是什么? 什么是只返回布爾值的'它'?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.