Я создал намерение получить доступ к новейшим электронным письмам, приходит во входящие, и все работало нормально.
После того, как я изменил свой пароль к учетной записи Gmail, я не могу получить доступ к своей почте Gmail с помощью бота.Ранее я мог получить доступ к электронной почте в своем чат-боте без авторизации, и работал очень хорошо.Я пытаюсь создать новый JSON-файл идентификаторов клиентов OAuth 2.0, но он все еще не работает.
Вот код:
string jsonPath2 =
System.Web.Hosting.HostingEnvironment.ApplicationPhysicalPath +
"client_secret_p1.json";
UserCredential credential;
string[] Scopes = { GmailService.Scope.GmailReadonly };
string credPath = System.Environment.GetFolderPath(
System.Environment.SpecialFolder.Personal);
using (var stream = new FileStream(jsonPath2, FileMode.Open,
FileAccess.Read))
{
credential = await GoogleWebAuthorizationBroker.AuthorizeAsync(
GoogleClientSecrets.Load(stream).Secrets,
// This OAuth 2.0 access scope allows for read-only access
to the authenticated
// user's account, but not other types of account access.
new[] { GmailService.Scope.GmailReadonly, GmailService.Scope.MailGoogleCom, GmailService.Scope.GmailModify, GmailService.Scope.GmailMetadata },
"xxxx@gmail.com",
CancellationToken.None,
new FileDataStore(this.GetType().ToString())
);
}
var gmailService = new GmailService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = this.GetType().ToString()
});
var emailListRequest = gmailService.Users.Messages.List("xxxx@gmail.com");
emailListRequest.LabelIds = "INBOX";
emailListRequest.MaxResults = 1;
emailListRequest.Q = "is:unread";
emailListRequest.IncludeSpamTrash = false;
//emailListRequest.Q = "is:unread"; // This was added because I only wanted unread emails...
// Get our emails
var emailListResponse = emailListRequest.Execute();
//get our emails
log.Info(" emailListResponse is " + emailListResponse);
if (emailListResponse != null && emailListResponse.Messages != null)
{
//loop through each email and get what fields you want...
foreach (var email in emailListResponse.Messages)
{
var emailInfoRequest = gmailService.Users.Messages.Get("xxx@gmail.com", email.Id);
var emailInfoResponse = emailInfoRequest.Execute();
if (emailInfoResponse != null)
{
String from = "";
String date = "";
String subject = "";
String body = "";
//loop through the headers to get from,date,subject, body
foreach (var mParts in emailInfoResponse.Payload.Headers)
{
if (mParts.Name == "Date")
{
date = mParts.Value;
}
else if (mParts.Name == "From")
{
from = mParts.Value;
}
else if (mParts.Name == "Subject")
{
subject = mParts.Value;
}
if (date != "" && from != "")
{
foreach (MessagePart p in emailInfoResponse.Payload.Parts)
{
if (emailInfoResponse.Payload.Parts == null && emailInfoResponse.Payload.Body != null)
body = DecodeBase64String(emailInfoResponse.Payload.Parts[0].Body.Data);
else
body = GetNestedBodyParts(emailInfoResponse.Payload.Parts, "");
}
//else
if (p.MimeType == "text/html")
//{
//byte[] data = FromBase64ForUrlString(p.Body.Data);
// string decodedString = Encoding.UTF8.GetString(data);
//}
}
}
///////////
var source = body;
var parser = new HtmlParser();
var dom = parser.Parse(source);
var querySelector = dom.QuerySelector("a");
//var textLink = querySelector.GetAttribute("href");
await context.PostAsync("Info: Date );
секретный формат клиента:
{"installed":{"client_id":"com","project_id":"","auth_uri":"https://accounts.google.com/o/oauth2/auth","token_uri":"https://www.googleapis.com/oauth2/v3/token","auth_provider_x509_cert_url":"https://www.googleapis.com/oauth2/v1/certs","client_secret":"","redirect_uris":["urn:ietf:wg:oauth:2.0:oob","http://localhost"]}}
Я аннулирую доступ к этому приложению.Я пытаюсь прочитать данные из gmail, бот просит меня войти, я ввел учетные данные своей учетной записи и я получаю следующие окна:
Послечто я не могу получить доступ к данным: (