0

我目前正在开发一个.net web 应用程序,它使用我使用 RestSharp 查询的 GCP 的 automl 视觉模型服务,问题是一段时间后我开始从模型中获得未经授权的响应,我目前通过运行来解决这个问题

gcloud auth application-default print-access-token

在 CMD 中并在请求中手动复制和粘贴令牌,如下所示:

var request = new RestRequest(Method.POST);
request.AddHeader("authorization", "Bearer " + "I paste it here" );
request.AddJsonBody(new {
    payload = new {
                   image = new
                   {
                        imageBytes = base64
                   }
            }
     });

有没有办法在 C# 中自动执行此操作?如果不是,那么在此模型中进行身份验证的正确方法是什么?

4

2 回答 2

2

您最好使用 Google 的 .NET 身份验证库以编程方式管理 OAuth 流程和凭据的使用。然后,您可以返回对 API 进行 REST 调用。

https://cloud.google.com/docs/authentication/production#auth-cloud-implicit-csharp

建议:创建一个服务帐户(具有适当的权限)并将其用于身份验证,而不是您正在执行的用户帐户。

不幸的是,Google 似乎没有为 .NET 的 AuthML 提供云客户端库(/-ies)。您应该通过在issuetracker上提交问题来纠缠 Google 工程部执行此操作

于 2019-07-30T22:33:40.617 回答
0

我能够通过使用这个NuGet 包绕过这个

它就像使用此代码一样简单,以防将来有人需要它:

GoogleAutoMLVisionClient automlClient = new GoogleAutoMLVisionClient("<My credentials.json>");
ICollection<PredictResult> automlResponses = automlClient.Predict("My endpoint:predict", file.OpenReadStream()).Result.payload;
foreach(PredictResult automlResult in automlResponses)
{
    Debug.WriteLine("Name: " + automlResult.displayName + "Score:" + automlResult.classification.score.ToString());
}
于 2019-08-05T21:12:38.720 回答