在C#中是否存在等效的gcloud auth应用程序默认打印访问令牌?

时间:2019-07-30 21:25:54

标签: c# google-cloud-platform gcloud google-vision google-cloud-automl

我目前正在使用.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#中有什么方法可以自动执行此操作吗? 如果没有,在此模型中进行身份验证的正确方法是什么?

2 个答案:

答案 0 :(得分:2)

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

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

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

很遗憾,Google似乎没有为AuthML for .NET提供云客户端库。您应该通过在issuetracker

上发布问题来扰乱Google Engineering的工作

答案 1 :(得分:0)

我可以使用此NuGet Package

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

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());
}