2016-04-10 19 views
0

Ich arbeite an einem Projekt, das über die Google Mail-API auf Google Mail zugreifen muss. aber ich halte diesen Fehler, wenn sie versuchen Imap einzuloggen:Fehler bei der Anmeldung bei Google Mail mit dem Imap-Client über die Google Mail-API C#

{ "Status": "400", "Systeme": "Bearer", "Umfang": "https://mail.google.com/"}

i nähen hier OAuth 2 SASL string error , dass jemand fragte nach diesem Problem und sagte, dass es gelöst, indem Sie den richtigen Token Bereich in meinem Fall, es funktioniert nicht, der Fehler ist immer noch knallen.

static string[] Scopes = { GmailService.Scope.GmailReadonly }; 
    static string ApplicationName = "Gmail API .NET Quickstart"; 

    static void Main(string[] args) 
    { 
     UserCredential credential; 

     using (var stream = 
     new FileStream("client_secret.json", FileMode.Open,FileAccess.Read)) 
     { 
      string credPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal); 
      credPath = Path.Combine(credPath, ".credentials/gmail-dotnet-quickstart.json"); 

      credential = GoogleWebAuthorizationBroker.AuthorizeAsync(GoogleClientSecrets.Load(stream).Secrets, Scopes, "Sapir", CancellationToken.None, new FileDataStore(credPath, true)).Result; 
      Console.WriteLine("Credential file saved to: " + credPath); 
     } 

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

     // Define parameters of request. 
     UsersResource.LabelsResource.ListRequest request = service.Users.Labels.List("me"); 


     credential.Token.Scope = "https://mail.google.com/"; 

     ImapClient ic = new ImapClient("imap.gmail.com","[email protected]", credential.Token.AccessToken,AuthMethods.SaslOAuth, 993, true); 

     ic.SelectMailbox("INBOX"); 
     Console.WriteLine(ic.GetMessageCount()); 
     MailMessage[] mm = ic.GetMessages(0, 1); 
     foreach (MailMessage m in mm) 
     { 
      Console.WriteLine(m.Subject + " " + m.Date.ToString()); 
     } 
     ic.Dispose(); 
     Console.Read(); 
    } 

Antwort

0

Fehlermeldung scheint zu passieren, wenn Sie ein Zugriffstoken abgelaufen, überprüfen Sie die Zugriffstoken und stellen Sie sicher, dass es nicht abgelaufen ist. Hier ist ein ähnliches Problem mit dem Status 400: Gmail XOAUTH 2.0, IMAP AUTHENTICATE returns "status":"400"

+0

ich sehe nicht, wie dieses Beispiel meinem Fall hilft ... – SapirA