C# 如何在GoogleAPI请求中提供头信息,如包名和SHA1?

C# 如何在GoogleAPI请求中提供头信息,如包名和SHA1?,c#,xamarin,google-api,youtube-data-api,google-api-dotnet-client,C#,Xamarin,Google Api,Youtube Data Api,Google Api Dotnet Client,我正在尝试使用dotnetsdk访问googleapi。当我没有API限制时,我可以使用以下代码访问并获取JSON。我仍然可以使用IP地址限制进行访问。但是当我想使用应用程序限制时,我必须提供包名和SHA-1,这是我已经生成的 我只是不知道在请求API get时如何提供这个头信息。 有几种方法可以实现凭据。通过使用服务帐户,我只需要提供电子邮件和私钥,但我不想使用OAuth访问。请让我知道是否有最好的方法来实施它 var youtubeService = new YouTubeService(n

我正在尝试使用dotnetsdk访问googleapi。当我没有API限制时,我可以使用以下代码访问并获取JSON。我仍然可以使用IP地址限制进行访问。但是当我想使用应用程序限制时,我必须提供包名和SHA-1,这是我已经生成的

我只是不知道在请求API get时如何提供这个头信息。 有几种方法可以实现凭据。通过使用服务帐户,我只需要提供电子邮件和私钥,但我不想使用OAuth访问。请让我知道是否有最好的方法来实施它

var youtubeService = new YouTubeService(new BaseClientService.Initializer()
{
    ApiKey = "****",
    // HttpClientInitializer = credential,
    ApplicationName = "*****"
});

Xamarin和Google API.net客户端库

您似乎试图使用Xamarin的。Google API.net客户端库不支持Xamarin

请看问题

我猜想,您至少需要自己编写所有的身份验证代码,然后才能使一些类库正常工作。我的调查使我相信图书馆和Xamarin的主要问题是授权的实现

服务帐户和YouTube


YouTube API不支持服务帐户身份验证。您需要使用Oauth2并通过这种方式对用户进行身份验证。

Xamarin和Google API.net客户端库

您似乎试图使用Xamarin的。Google API.net客户端库不支持Xamarin

请看问题

我猜想,您至少需要自己编写所有的身份验证代码,然后才能使一些类库正常工作。我的调查使我相信图书馆和Xamarin的主要问题是授权的实现

服务帐户和YouTube


YouTube API不支持服务帐户身份验证。您需要使用Oauth2并通过这种方式对用户进行身份验证。

因此我找到了提供包名和SHA1的正确方法。现在我可以通过应用程序限制正确获取Json返回

youtubeService.HttpClient.DefaultRequestHeaders.Add("X-Android-Package", AppInfo.PackageName);
youtubeService.HttpClient.DefaultRequestHeaders.Add("X-Android-Cert","******");
SHA-1证书指纹在API请求头中发送时必须为不带分号的小写字符串

有没有一种方法可以在代码中获取SHA1,而不是简单地将其作为字符串?另外,请告诉我是否有更好的方法编写此
youtubeService.HttpClient.DefaultRequestHeaders.Add


我从中得到了线索。

因此我找到了提供包名和SHA1的正确方法。现在我可以通过应用程序限制正确获取Json返回

youtubeService.HttpClient.DefaultRequestHeaders.Add("X-Android-Package", AppInfo.PackageName);
youtubeService.HttpClient.DefaultRequestHeaders.Add("X-Android-Cert","******");
SHA-1证书指纹在API请求头中发送时必须为不带分号的小写字符串

有没有一种方法可以在代码中获取SHA1,而不是简单地将其作为字符串?另外,请告诉我是否有更好的方法编写此
youtubeService.HttpClient.DefaultRequestHeaders.Add


我从。

BaseClientService中得到了线索,它允许IHttpClientFactory,因此您可以提供FactoryThank。是这样的吗<代码>youtubeService.HttpClient.DefaultRequestHeaders.Add(“X-Android-Package”,AppInfo.PackageName)BaseClientService允许IHttpClientFactory,因此您可以提供FactoryThank。是这样的吗<代码>youtubeService.HttpClient.DefaultRequestHeaders.Add(“X-Android-Package”,AppInfo.PackageName)感谢“不带分号的小写字符串”我无法解决问题,因为我只是提供了从.apk文件复制的类似于sha1的内容感谢“不带分号的小写字符串”我无法解决问题,因为我只是提供了从.apk文件复制的类似于sha1的内容