使用Gmail API C使用Imap客户端登录Gmail时出错

时间:2016-04-10 10:57:07

标签: c# api gmail gmail-api gmail-imap

我正在开发一个需要使用Gmail API访问Gmail的项目。 但在尝试登录Imap时我一直收到此错误:

{"状态":" 400""方案":"承载""范围":& #34; https://mail.google.com/"}

我在这里找到OAuth 2 SASL string error,有人询问了这个问题,并说通过放置正确的令牌范围解决了这个问题 在我的情况下,它没有工作,错误仍然弹出。

    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","astechnetivot@gmail.com", 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();
    }

0 个答案:

没有答案