web-dev-qa-db-fra.com

Le client n'est pas autorisé à récupérer les jetons d'accès à l'aide de cette méthode API Gmail C #

Je reçois l'erreur suivante lorsque j'ai essayé d'autoriser l'API Gmail à l'aide du compte de service

"Le client n'est pas autorisé à récupérer les jetons d'accès à l'aide de cette méthode"

static async Task MainAsync()
    {

        sstageEntities db = new sstageEntities();
        //UserCredential credential;
        Dictionary<string, string> dictionary = new Dictionary<string, string>();    
String serviceAccountEmail =
"xxx.iam.gserviceaccount.com";

        var certificate = new X509Certificate2(
            AppDomain.CurrentDomain.BaseDirectory +
              "xxx-8c7a4169631a.p12",
            "notasecret",
            X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.Exportable);

        //string userEmail = "[email protected]";

        ServiceAccountCredential credential = new ServiceAccountCredential(
            new ServiceAccountCredential.Initializer(serviceAccountEmail)
            {
                User = "[email protected]",
                Scopes = new[] { "https://mail.google.com/" }
            }.FromCertificate(certificate)
        );


        // Create Gmail API service.
        var gmailService = new GmailService(new BaseClientService.Initializer()
        {
            HttpClientInitializer = credential,
            ApplicationName = ApplicationName,
        });

        // Define parameters of request.

        var emailListRequest = gmailService.Users.Messages.List("[email protected]");
        emailListRequest.LabelIds = "INBOX";
        emailListRequest.IncludeSpamTrash = true;
        emailListRequest.Q = "from:[email protected] is:unread";



        //Get our emails
        var emailListResponse = await emailListRequest.ExecuteAsync();

J'utilise la clé p12 que j'ai obtenue lors de la création du compte de service.Mais lorsque j'exécute mon application console, l'erreur suivante se produit.Toute aide serait vraiment appréciée.

Merci d'avance !

16
Melvin

Le compte de service doit être autorisé ou il ne peut pas accéder aux e-mails du domaine.

"Le client n'est pas autorisé à récupérer les jetons d'accès à l'aide de cette méthode"

Signifie que vous ne l'avez pas autorisé correctement vérifier Délégation d'autorité à l'échelle du domaine au compte de service

18
DaImTo