我正在使用Xamarin.forms制作一个将图片上传到特定Google驱动器的特定文件夹的应用。为此,我使用了服务帐户。这是授权服务帐户的代码:
private async Task<bool> AuthenticateServiceAccountAsync()
{
var serviceAccount = await GetFirstResourceStringWithName(_ServiceAccountKey);
if(serviceAccount == null)
{
await Application.Current.MainPage.DisplayExceptionAlert(new Exception("Service account key not found. Unable to authenticate."));
return false;
}
string[] scopes = new string[] { DriveService.Scope.Drive };
try
{
GoogleCredential credential = GoogleCredential.FromJson(serviceAccount)
.CreateScoped(scopes);
_DriveService = new DriveService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = "MyAppName"
});
return true;
}
catch(Exception e)
{
await Application.Current.MainPage.DisplayExceptionAlert(
e,
"No se pudo inicializar la cuenta de servicio.");
return false;
}
}
工作正常,但是我不知道如何检查到期时间,在GoogleCredential
或DriveService
类型中都没有可见的令牌。
嗯,那不是完全正确的,一个人可以用GoogleCredential.UnderlyingCredential.GetAccessTokenForRequestAsync()
来获得一个令牌,但是据我所知,那仅仅是令牌字符串,而没有有关到期时间的信息。在这种情况下似乎没用。
我应该只填写一个DateTime
字段并检查自从对服务帐户进行身份验证以来是否已经过了一个小时?