Buenas, estoy haciendo un servicio para leer email usando la API de Gmail. Para autenticarme he creado una cuenta de servicio con la que obtengo un certificado. Este es el código que tengo implementado:
string certPath = "./XXXXX.p12";
string userEmail = "[email protected]";
string serviceAccountEmail = "MYSERVICEACCOUNT...am.gserviceaccount.com";
//Carga el certificado obtenido de
var certificate = new X509Certificate2(certPath, "notasecret", X509KeyStorageFlags.Exportable);
ServiceAccountCredential credential = new ServiceAccountCredential(
new ServiceAccountCredential.Initializer(serviceAccountEmail)
{
User = userEmail,
Scopes = string[] { GmailService.Scope.GmailReadonly }
}.FromCertificate(certificate)
);
if (credential.RequestAccessTokenAsync(CancellationToken.None).Result) <--- AQUÍ OBTENGO EL ERROR
{
GmailService gs = new GmailService(
new BaseClientService.Initializer()
{
ApplicationName = "Gmail API .NET"
,
HttpClientInitializer = credential
}
);
}
El problema es que obtengo el siguiente error: "InnerException = {"Error:\"unauthorized_client\", Description:\"Unauthorized client or scope in request.\", Uri:\"\""} "
¿Qué estoy haciendo mal? ¿Alguien puede ayudarme?
Gracias.