студент-программист здесь зацикливается на процессе аутентификации Google. Попытка создать веб-приложение календаря с использованием аутентификации Google / Google Calendar API. Кажется, что начальный знак работает нормально, так как мое имя отображается в моем элементе управления входом, но я застрял в части авторизации календаря. После 16 часов изучения руководств вот что я придумал ...
public class CalHandler
{
private UserCredential Credential { get; set; }
private ClaimsPrincipal User { get; set; }
private CalendarService Service { get; set; }
public void setUser(ClaimsPrincipal user)
{
User = user;
}
public void Authorize()
{
string[] Scopes = { CalendarService.Scope.Calendar, CalendarService.Scope.CalendarEvents };
string ApplicationName = "CalendarApp";
using (var stream = new System.IO.FileStream("appsettings.json", System.IO.FileMode.Open,
System.IO.FileAccess.Read))
{
CancellationTokenSource cts = new CancellationTokenSource();
cts.CancelAfter(TimeSpan.FromSeconds(20));
CancellationToken ct = cts.Token;
Credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
GoogleClientSecrets.Load(stream).Secrets,
Scopes,
"user",
ct).Result;
Service = new CalendarService(new Google.Apis.Services.BaseClientService.Initializer()
{
HttpClientInitializer = Credential,
ApplicationName = ApplicationName
});
}
}
public List<Event> GetEvents(int year, int month, int dim)
{
try {
Authorize();
EventsResource.ListRequest request = Service.Events.List("primary");
request.TimeMin = new DateTime(year, month, 1);
request.TimeMax = new DateTime(year, month, dim);
request.SingleEvents = true;
request.MaxResults = 30;
request.OrderBy = EventsResource.ListRequest.OrderByEnum.StartTime;
List<Event> events = request.Execute().Items.ToList();
return events;
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
return null;
}
}
Все работает нормально, когда я запускаю его в Visual Studio, но ломается, как только я публикую sh в Azure. GetEvents () всегда возвращает null, и в моем календаре ничего не отображается. Я думаю, это может иметь какое-то отношение к хранилищу, но я мало работал с аутентификацией, поэтому не могу быть уверен? Любые советы или подсказки по работе с этим были бы замечательными!