1

我正在编写一个 Google Apps 脚本以通过可汗学院的 API 访问学生信息。目前,我有一个脚本可以成功访问我的用户数据并将我的学生信息列为 JSON 数据。我可以访问他们的用户 ID 和密钥,但我不确定如何继续访问他们的每周进度和锻炼摘要等信息。如何切换 OAuth 以使用 api/user/exercises 访问他们的帐户?任何帮助将不胜感激。代码如下。

var CONSUMER_KEY = 'my consumer key';
var CONSUMER_SECRET = 'my consumer secret';
var PROJECT_KEY = 'my project key';


function listExercises() {
  var service = getKhanAcademyService();
  if (service.hasAccess()) {
     var response = service.fetch('https://www.khanacademy.org/api/v1/user/students');
     var students = JSON.parse(response.getContentText());
     Logger.log(students);
     Logger.log("______________________________");

     for (var i = 0; i < students.length; i++){
       Logger.log(students[i].nickname + ": " + students[i].user_id);
       Logger.log(students[i].student_summary.key);

     //HERE I WANT TO ACCESS MORE DETAILED STUDENT INFORMATION, LIKE THEIR
     //MASTERED SKILLS AND WEEKLY PROGRESS

}

  } else {
    var authorizationUrl = service.authorize();
    Logger.log('Please visit the following URL and then re-run the script: ' + authorizationUrl);
  }
}

function getKhanAcademyService() {
  var service = OAuth1.createService('khanAcademy');


    service.setAccessTokenUrl('https://www.khanacademy.org/api/auth2/access_token');
service.setRequestTokenUrl('https://www.khanacademy.org/api/auth2/request_token')   
service.setAuthorizationUrl('https://www.khanacademy.org/api/auth2/authorize');
service.setConsumerKey(CONSUMER_KEY);
service.setConsumerSecret(CONSUMER_SECRET);
service.setCallbackFunction('authCallback');
service.setPropertyStore(PropertiesService.getScriptProperties());
service.setOAuthVersion('1.0a');
service.setParamLocation('uri-query');
return service;
    }

function authCallback(request) {
  var service = getKhanAcademyService();
  var isAuthorized = service.handleCallback(request);
  if (isAuthorized) {
    return HtmlService.createHtmlOutput('Success! You can close this page');
  } else {
    return HtmlService.createHtmlOutput('Denied. You can close this page');
  }
}
4

0 回答 0