我正在使用Google脚本开发一个web应用程序,我在理解授权是如何处理的方面遇到了一些困难。当以用户身份访问web应用程序时,它会提示用户授权,一切看起来都很好。然而,我打电话给userProfiles.get,并寻找学生的电子邮件地址,它返回的配置文件没有电子邮件。
function classRosters() {
var teacher = Classroom.UserProfiles.get(Session.getActiveUser().getEmail());
var classList = Classroom.Courses.list({teacherId: teacher.id}).courses;
var classes = [];
for (i in classList) {
if (classList[i].courseState != 'ACTIVE') {
continue;
}
var class = classList[i];
var classId = classList[i].id;
var className = classList[i].name;
classes.push([className]);
var teacherId = Classroom.Courses.Teachers.get(classId, classList[i].ownerId).userId;
var teacherEmail = Classroom.UserProfiles.get(teacherId);
var title = Classroom.Courses.get(classId).name;
var students = Classroom.Courses.Students.list(classId).students;
var studentArray = [];
if (students) {
for (j in students) {
var currStudent = students[j];
var email = Classroom.UserProfiles.get(currStudent.userId).emailAddress;
var email = Classroom.Courses.Students.get(classId, currStudent.userId).profile.emailAddress;
studentArray.push(email);
Logger.log(email);
}
}
for (j in classes) {
if (className.indexOf(classes[j]) > -1) {
var classIndex = +j;
classes[classIndex].push(studentArray);
}
}
}
return classes;
}我已经使用了API,它显示了classroom.profile.email是必需的,但这并不包括在作用域中。当我使用API资源管理器时,我可以授权,它可以工作,我的web应用程序也会工作,直到浏览器的授权到期为止。
是否有任何方法提示在气体库中授权教室高级服务?我找不到任何特定于GAS的东西,而不是整个API的一部分。
谢谢,詹姆斯
发布于 2015-08-06 13:53:32
不幸的是,Apps脚本不允许您为高级服务请求额外的作用域。执行该方法不需要电子邮件和照片范围,但需要在响应中返回电子邮件和照片数据。您可以按照第3070期来了解这个问题的进展情况。
更新2015-08-17
我们刚刚实现了一个解决方案,即教室高级服务现在总是提示输入以下固定的范围:
https://www.googleapis.com/auth/classroom.courses https://www.googleapis.com/auth/classroom.rosters https://www.googleapis.com/auth/classroom.profile.emails https://www.googleapis.com/auth/classroom.profile.photos
这提供了对电子邮件的访问,但确实意味着为给定脚本请求的作用域可能超出了它实际需要的范围。我们希望这能解除试图使用Apps脚本来管理课堂数据的管理员的障碍,而我们则致力于解决Apps脚本中的可选作用域的长期解决方案。
https://stackoverflow.com/questions/31845646
复制相似问题