С помощью кода метода, который я привел ниже, я пытаюсь получить список дополнительных вложений к заданию Класса. Я захожу под учетной записью учителя класса, и, как вы можете видеть в начале, добавлены все возможные разрешения. Проблема: я получаю следующую ошибку:
"Класс обслуживания выдал исключение. HttpStatusCode запрещен. В запросе недостаточно областей аутентификации".
Мой метод:
public class Classroom
{
static string[] Scopes = { ClassroomService.Scope.ClassroomCourses, ClassroomService.Scope.ClassroomCourseworkmaterials,
ClassroomService.Scope.ClassroomCourseworkMe, ClassroomService.Scope.ClassroomCourseworkStudents, ClassroomService.Scope.ClassroomCourseworkStudentsReadonly, ClassroomService.Scope.ClassroomGuardianlinksStudents,
ClassroomService.Scope.ClassroomAnnouncements, ClassroomService.Scope.ClassroomCourseworkMe, ClassroomService.Scope.ClassroomProfileEmails, ClassroomService.Scope.ClassroomProfilePhotos,
ClassroomService.Scope.ClassroomPushNotifications, ClassroomService.Scope.ClassroomRosters, ClassroomService.Scope.ClassroomStudentSubmissionsMeReadonly,
ClassroomService.Scope.ClassroomStudentSubmissionsStudentsReadonly, ClassroomService.Scope.ClassroomTopics};
static string ApplicationName = "ControlGoogleMCV";
public GDrive_baj GDrive_bajD = new GDrive_baj();
public void Main()
{
ClientSecrets secrets = new ClientSecrets()
{
ClientId = "________________",
ClientSecret = "__________________________"
};
UserCredential credential;
using (var stream =
new FileStream(Form1.ObtenerAtributo("rutalocaljson"), FileMode.Open, FileAccess.Read))
{
string credPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
credPath = Path.Combine(credPath, ".credentials/", System.Reflection.Assembly.GetExecutingAssembly().GetName().FullName, "paraclassroom");
credential = Google.Apis.Auth.OAuth2.GoogleWebAuthorizationBroker.AuthorizeAsync(secrets,
Scopes,
"_________",
CancellationToken.None,
new FileDataStore(credPath, true)).Result;
Console.WriteLine("Credential file saved to: " + credPath);
}
// Create Classroom API service.
var service = new ClassroomService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = ApplicationName,
});
// Define request parameters.
CoursesResource.ListRequest request = service.Courses.List();
request.PageSize = 10;
try
{
CoursesResource.ListRequest lr = new CoursesResource.ListRequest(service);
string cadbusname = Interaction.InputBox("Cadena de búsqueda en el atributo ''name'' del curso. ''Cancelar'' no " +
"dará resultado; ''Aceptar'' inicia la búsqueda", "Cadena de búsqueda en el nombre del curso", "Transcripción de la música flamenca 2024/2025"
);
if (cadbusname.Length > 0) {
foreach (Course c in lr.Execute().Courses)
{
if (c.Name.Contains(cadbusname))
{
string cadbusnametarea = Interaction.InputBox("Cadena de búsqueda en el atributo ''name'' de la tarea. ''Cancelar''" +
"no dará resultado; ''Aceptar'' inicia la búsqueda", "Cadena de búsqueda en el nombre de la tarea", "Ejercicio 8.");
CoursesResource.CourseWorkResource.ListRequest cwrlr = new CoursesResource.CourseWorkResource.ListRequest(service, c.Id);
foreach (CourseWork cwr in cwrlr.Execute().CourseWork)
{
if (cwr.Title.Contains(cadbusnametarea))
{
string idCur = cwr.Id;
var cwrmat = cwr.Materials;
foreach (var item in cwrmat)
{
if (item.DriveFile != null)
{
string tx = "El archivo se ha subido desde Google Drive. El thumbonailurl es : " + item.DriveFile.DriveFile.ThumbnailUrl +
". El enlace alternativo es: " + item.DriveFile.DriveFile.AlternateLink + ". El título es: " + item.DriveFile.DriveFile.Title;
}
if (item.Link != null)
{
string tx = "Se trata de un enlace. La url es " + item.Link.Url + ". El thumbonailurl es : " + item.Link.ThumbnailUrl +
". El título es: " + item.Link.Title;
}
}
CoursesResource.CourseWorkResource.AddOnAttachmentsResource.ListRequest ccarlr = new CourseWorkResource.AddOnAttachmentsResource.ListRequest(service, c.Id, idCur);
foreach (AddOnAttachment item in ccarlr.Execute().AddOnAttachments)
{
string nn = item.ItemId;
}
}
}
}
}
};
}
catch (Exception e)
{
string ff = e.Message;
}
}
}
В строке появляется ошибка:
foreach (AddOnAttachment item in ccarlr.Execute().AddOnAttachments)
Буду признателен за любую помощь.
Цель – получить доступ к данным, относящимся к вложениям задач, которые Я сам создал для студентов.
Я редактирую, чтобы сказать, что я пытался добавлять дополнительные вложения для Announcements, CourseWorks и CoursesorksMaterials, и это всегда выдает одну и ту же ошибку. Несмотря на то, что я отметил все возможные разрешения для Classroom API в своем приложении Cloud Platform, и они также появляются в начале класса, в котором я выполняю эти операции, он никогда не позволяет мне получить доступ к дополнительным вложениям или создать их.Однако я могу получить доступ к данным для курсов и CourseWorks, а также могу создать их с помощью той же учетной записи (учителя).
Это создание объявлений работает для меня правильно
//se crea correctamente el anuncio en el tablón
Google.Apis.Classroom.v1.Data.Announcement anu = new Announcement();
anu.Text = "El cuerpo del anuncio para el curso Prueba";
Google.Apis.Classroom.v1.CoursesResource.AnnouncementsResource.CreateRequest cr = new
CoursesResource.AnnouncementsResource.CreateRequest(service, anu, c.Id);
cr.Execute();
Но это создание дополнительных вложений CourseWork у меня не работает
////insuficientes permisos
Google.Apis.Classroom.v1.Data.AddOnAttachment addo = new AddOnAttachment();
addo.Title = "El título del add-on attachment para la tarea Prueba1";
Google.Apis.Classroom.v1.CoursesResource.CourseWorkResource.AddOnAttachmentsResource.CreateRequest cwaoa = new
CourseWorkResource.AddOnAttachmentsResource.CreateRequest(service, addo, c.Id, idCur);
cwaoa.Execute();
Я попытался создать вложение надстройки сразу после создания CourseWork, чтобы убедиться, что ошибка не связана с тем, что экземпляр CourseWork имеет ограничения доступа в зависимости от режима доступа. Но возникает та же ошибка.
Вот код:
////The task is created correctly when I try to create an add-on attachment for it
//the error about missing permissions appears again
Google.Apis.Classroom.v1.Data.CourseWork cw = new CourseWork();
cw.Title = "New courseWork for the course";
cw.WorkType = "Assignment";
cw.State = "PUBLISHED";
String idCW = "";
Google.Apis.Classroom.v1.CoursesResource.CourseWorkResource.CreateRequest cwre =
new CourseWorkResource.CreateRequest (service, cw, c.Id);
cwre.Execute();
foreach (Google.Apis.Classroom.v1.Data.CourseWork item in cwrlr.Execute().CourseWork)
{
if (item.Title == cw.Title)
{
idCW = item.Id;
break;
}
}
Google.Apis.Classroom.v1.Data.AddOnAttachment addoA = new AddOnAttachment();
addoA.Title = "The title of the add-on attachment for the task created";
Google.Apis.Classroom.v1.CoursesResource.CourseWorkResource.AddOnAttachmentsResource.CreateRequest cwaoa = new
CourseWorkResource.AddOnAttachmentsResource.CreateRequest(service, addoA, c.Id, idCW);
cwaoa.Execute();
Ошибка возникает в строке:
cwaoa.Execute();
Подробнее здесь: https://stackoverflow.com/questions/791 ... th-c-sharp
Ошибка разрешения доступа к вложениям задания Класса с помощью C# ⇐ C#
Место общения программистов C#
-
Anonymous
1730489365
Anonymous
С помощью кода метода, который я привел ниже, я пытаюсь получить список дополнительных вложений к заданию Класса. Я захожу под учетной записью учителя класса, и, как вы можете видеть в начале, добавлены все возможные разрешения. Проблема: я получаю следующую ошибку:
[b]"Класс обслуживания выдал исключение. HttpStatusCode запрещен. В запросе недостаточно областей аутентификации".[/b]
Мой метод:
public class Classroom
{
static string[] Scopes = { ClassroomService.Scope.ClassroomCourses, ClassroomService.Scope.ClassroomCourseworkmaterials,
ClassroomService.Scope.ClassroomCourseworkMe, ClassroomService.Scope.ClassroomCourseworkStudents, ClassroomService.Scope.ClassroomCourseworkStudentsReadonly, ClassroomService.Scope.ClassroomGuardianlinksStudents,
ClassroomService.Scope.ClassroomAnnouncements, ClassroomService.Scope.ClassroomCourseworkMe, ClassroomService.Scope.ClassroomProfileEmails, ClassroomService.Scope.ClassroomProfilePhotos,
ClassroomService.Scope.ClassroomPushNotifications, ClassroomService.Scope.ClassroomRosters, ClassroomService.Scope.ClassroomStudentSubmissionsMeReadonly,
ClassroomService.Scope.ClassroomStudentSubmissionsStudentsReadonly, ClassroomService.Scope.ClassroomTopics};
static string ApplicationName = "ControlGoogleMCV";
public GDrive_baj GDrive_bajD = new GDrive_baj();
public void Main()
{
ClientSecrets secrets = new ClientSecrets()
{
ClientId = "________________",
ClientSecret = "__________________________"
};
UserCredential credential;
using (var stream =
new FileStream(Form1.ObtenerAtributo("rutalocaljson"), FileMode.Open, FileAccess.Read))
{
string credPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
credPath = Path.Combine(credPath, ".credentials/", System.Reflection.Assembly.GetExecutingAssembly().GetName().FullName, "paraclassroom");
credential = Google.Apis.Auth.OAuth2.GoogleWebAuthorizationBroker.AuthorizeAsync(secrets,
Scopes,
"_________",
CancellationToken.None,
new FileDataStore(credPath, true)).Result;
Console.WriteLine("Credential file saved to: " + credPath);
}
// Create Classroom API service.
var service = new ClassroomService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = ApplicationName,
});
// Define request parameters.
CoursesResource.ListRequest request = service.Courses.List();
request.PageSize = 10;
try
{
CoursesResource.ListRequest lr = new CoursesResource.ListRequest(service);
string cadbusname = Interaction.InputBox("Cadena de búsqueda en el atributo ''name'' del curso. ''Cancelar'' no " +
"dará resultado; ''Aceptar'' inicia la búsqueda", "Cadena de búsqueda en el nombre del curso", "Transcripción de la música flamenca 2024/2025"
);
if (cadbusname.Length > 0) {
foreach (Course c in lr.Execute().Courses)
{
if (c.Name.Contains(cadbusname))
{
string cadbusnametarea = Interaction.InputBox("Cadena de búsqueda en el atributo ''name'' de la tarea. ''Cancelar''" +
"no dará resultado; ''Aceptar'' inicia la búsqueda", "Cadena de búsqueda en el nombre de la tarea", "Ejercicio 8.");
CoursesResource.CourseWorkResource.ListRequest cwrlr = new CoursesResource.CourseWorkResource.ListRequest(service, c.Id);
foreach (CourseWork cwr in cwrlr.Execute().CourseWork)
{
if (cwr.Title.Contains(cadbusnametarea))
{
string idCur = cwr.Id;
var cwrmat = cwr.Materials;
foreach (var item in cwrmat)
{
if (item.DriveFile != null)
{
string tx = "El archivo se ha subido desde Google Drive. El thumbonailurl es : " + item.DriveFile.DriveFile.ThumbnailUrl +
". El enlace alternativo es: " + item.DriveFile.DriveFile.AlternateLink + ". El título es: " + item.DriveFile.DriveFile.Title;
}
if (item.Link != null)
{
string tx = "Se trata de un enlace. La url es " + item.Link.Url + ". El thumbonailurl es : " + item.Link.ThumbnailUrl +
". El título es: " + item.Link.Title;
}
}
CoursesResource.CourseWorkResource.AddOnAttachmentsResource.ListRequest ccarlr = new CourseWorkResource.AddOnAttachmentsResource.ListRequest(service, c.Id, idCur);
foreach (AddOnAttachment item in ccarlr.Execute().AddOnAttachments)
{
string nn = item.ItemId;
}
}
}
}
}
};
}
catch (Exception e)
{
string ff = e.Message;
}
}
}
В строке появляется ошибка:
foreach (AddOnAttachment item in ccarlr.Execute().AddOnAttachments)
Буду признателен за любую помощь.
Цель – получить доступ к данным, относящимся к вложениям задач, которые Я сам создал для студентов.
Я редактирую, чтобы сказать, что я пытался добавлять дополнительные вложения для Announcements, CourseWorks и CoursesorksMaterials, и это всегда выдает одну и ту же ошибку. Несмотря на то, что я отметил все возможные разрешения для Classroom API в своем приложении Cloud Platform, и они также появляются в начале класса, в котором я выполняю эти операции, он никогда не позволяет мне получить доступ к дополнительным вложениям или создать их.Однако я могу получить доступ к данным для курсов и CourseWorks, а также могу создать их с помощью той же учетной записи (учителя).
Это создание объявлений работает для меня правильно
//se crea correctamente el anuncio en el tablón
Google.Apis.Classroom.v1.Data.Announcement anu = new Announcement();
anu.Text = "El cuerpo del anuncio para el curso Prueba";
Google.Apis.Classroom.v1.CoursesResource.AnnouncementsResource.CreateRequest cr = new
CoursesResource.AnnouncementsResource.CreateRequest(service, anu, c.Id);
cr.Execute();
Но это создание дополнительных вложений CourseWork у меня не работает
////insuficientes permisos
Google.Apis.Classroom.v1.Data.AddOnAttachment addo = new AddOnAttachment();
addo.Title = "El título del add-on attachment para la tarea Prueba1";
Google.Apis.Classroom.v1.CoursesResource.CourseWorkResource.AddOnAttachmentsResource.CreateRequest cwaoa = new
CourseWorkResource.AddOnAttachmentsResource.CreateRequest(service, addo, c.Id, idCur);
cwaoa.Execute();
Я попытался создать вложение надстройки сразу после создания CourseWork, чтобы убедиться, что ошибка не связана с тем, что экземпляр CourseWork имеет ограничения доступа в зависимости от режима доступа. Но возникает та же ошибка.
Вот код:
////The task is created correctly when I try to create an add-on attachment for it
//the error about missing permissions appears again
Google.Apis.Classroom.v1.Data.CourseWork cw = new CourseWork();
cw.Title = "New courseWork for the course";
cw.WorkType = "Assignment";
cw.State = "PUBLISHED";
String idCW = "";
Google.Apis.Classroom.v1.CoursesResource.CourseWorkResource.CreateRequest cwre =
new CourseWorkResource.CreateRequest (service, cw, c.Id);
cwre.Execute();
foreach (Google.Apis.Classroom.v1.Data.CourseWork item in cwrlr.Execute().CourseWork)
{
if (item.Title == cw.Title)
{
idCW = item.Id;
break;
}
}
Google.Apis.Classroom.v1.Data.AddOnAttachment addoA = new AddOnAttachment();
addoA.Title = "The title of the add-on attachment for the task created";
Google.Apis.Classroom.v1.CoursesResource.CourseWorkResource.AddOnAttachmentsResource.CreateRequest cwaoa = new
CourseWorkResource.AddOnAttachmentsResource.CreateRequest(service, addoA, c.Id, idCW);
cwaoa.Execute();
Ошибка возникает в строке:
cwaoa.Execute();
Подробнее здесь: [url]https://stackoverflow.com/questions/79145791/permission-error-accessing-attachments-of-a-classroom-assignment-with-c-sharp[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия