2017-08-24 57 views
0

私はgoogle classroom apiで新しく、ローカルマシンでコースを作成したいと思っています。私はそれをすることができますか? 作成する場合、どのようにjavascriptを使用して? 私は試してみましたが、コード=> 403、ステータス= "PERMISSION_DENIED"、メッセージ=> "要求には認証スコープが不十分でした"というエラーが表示されます。google classroom api jsを使用してコースを作成する

私のコードでは、関数createCourse()を使用して新しいコースを作成します。

私のコードは、以下の

<!DOCTYPE html> 
<html> 
    <body> 
    <!--Add buttons to initiate auth sequence and sign out--> 
    <button id="authorize-button" style="display: none;">Authorize</button> 
    <button id="signout-button" style="display: none;">Sign Out</button> 

    <pre id="content"></pre> 

    <script type="text/javascript"> 
     // Client ID and API key from the Developer Console 
     var CLIENT_ID = '782126680600-9kkg23inbnn9sv8ficcvjci2rgrnd648.apps.googleusercontent.com'; 

     // Array of API discovery doc URLs for APIs used by the quickstart 
     var DISCOVERY_DOCS = ["https://www.googleapis.com/discovery/v1/apis/classroom/v1/rest"]; 

     // Authorization scopes required by the API; multiple scopes can be 
     // included, separated by spaces. 
     var SCOPES = "https://www.googleapis.com/auth/classroom.courses.readonly"; 

     var authorizeButton = document.getElementById('authorize-button'); 
     var signoutButton = document.getElementById('signout-button'); 

     /** 
     * On load, called to load the auth2 library and API client library. 
     */ 
     function handleClientLoad() { 
     gapi.load('client:auth2', initClient); 
     } 

     /** 
     * Initializes the API client library and sets up sign-in state 
     * listeners. 
     */ 
     function initClient() { 
     gapi.client.init({ 
      discoveryDocs: DISCOVERY_DOCS, 
      clientId: CLIENT_ID, 
      scope: SCOPES 
     }).then(function() { 
      // Listen for sign-in state changes. 
      gapi.auth2.getAuthInstance().isSignedIn.listen(updateSigninStatus); 

      // Handle the initial sign-in state. 
      updateSigninStatus(gapi.auth2.getAuthInstance().isSignedIn.get()); 
      authorizeButton.onclick = handleAuthClick; 
      signoutButton.onclick = handleSignoutClick; 
     }); 
     } 

     /** 
     * Called when the signed in status changes, to update the UI 
     * appropriately. After a sign-in, the API is called. 
     */ 
     function updateSigninStatus(isSignedIn) { 
     if (isSignedIn) { 
      authorizeButton.style.display = 'none'; 
      signoutButton.style.display = 'block'; 
      createCourse(); 
      listCourses(); 
     } else { 
      authorizeButton.style.display = 'block'; 
      signoutButton.style.display = 'none'; 
     } 
     } 

     /** 
     * Sign in the user upon button click. 
     */ 
     function handleAuthClick(event) { 
     gapi.auth2.getAuthInstance().signIn(); 
     } 

     /** 
     * Sign out the user upon button click. 
     */ 
     function handleSignoutClick(event) { 
     gapi.auth2.getAuthInstance().signOut(); 
     } 

     /** 
     * Append a pre element to the body containing the given message 
     * as its text node. Used to display the results of the API call. 
     * 
     * @param {string} message Text to be placed in pre element. 
     */ 
     function appendPre(message) { 
     var pre = document.getElementById('content'); 
     var textContent = document.createTextNode(message + '\n'); 
     pre.appendChild(textContent); 
     } 

     /** 
     * Print the names of the first 10 courses the user has access to. If 
     * no courses are found an appropriate message is printed. 
     */ 
     function listCourses() { 
     gapi.client.classroom.courses.list({ 
      pageSize: 10 
     }).then(function(response) { 
      console.info(response.result); 
      var courses = response.result.courses; 
      appendPre('Courses:'); 
      if (courses.length > 0) { 
      for (i = 0; i < courses.length; i++) { 
       var course = courses[i]; 
       appendPre(course.name) 
      } 
      } else { 
      appendPre('No courses found.'); 
      } 
     }); 
     } 
     function createCourse(){ 
      var newCourse = {'name': '9th Math','ownerId' : 'me','courseState' : 'PROVISIONED'}; 
      gapi.client.classroom.courses.create(newCourse).then(function(response) { 
       console.info(response); 
      }); 
     } 

    </script> 

    <script async defer src="https://apis.google.com/js/api.js" 
     onload="this.onload=function(){};handleClientLoad()" 
     onreadystatechange="if (this.readyState === 'complete') this.onload()"> 
    </script> 
    </body> 
</html> 

を与えているあなたはhttps://www.googleapis.com/auth/classroom.courses.readonlyからhttps://www.googleapis.com/auth/classroom.coursesにあなたの範囲を更新する必要が..........

答えて

0

を私に返信してください。

文書によると、courses.createには、次のOAuthスコープが必要です。https://www.googleapis.com/auth/classroom.coursesが機能します。

スコープhttps://www.googleapis.com/auth/classroom.courses.readonlyは、データのリストと取得に使用されます。作成する必要がある場合は、https://www.googleapis.com/auth/classroom.coursesを使用してAPIに完全にアクセスする必要があります。

これが役に立ちます。 機能getCourse(courseId){ gapi.client.classroom.courses.get(courseId).then(機能(応答){ はconsole.log(:私はなどのようなコースの詳細を取得しようとすると、私は別の助けを必要と

+0

応答); }); } エラーmsg is => "必須のパスパラメータIDがありません。"上記の関数は、 のようなリンクをクリックするとアクセスされます。

+0

このリンクを取得してください=> https:// stackoverflow .com/questions/45914125/google-classroom-api-to-get-a-course-details-using-js –

関連する問題