2017-05-13 2 views
0

Ich versuche, eine Datei auf Google Drive mit Google Drive V3 API und OAuth 2.0 von einem Browser in JavaScript zu speichern.Google Drive API v3 "code": 401, "Nachricht": "Anmeldung erforderlich"

mein Code ist wie folgt:

<pre><code> 
var startApp = function() { 
     gapi.load('auth2', function(){ 
      // Retrieve the singleton for the GoogleAuth library and set up the client. 
      auth2 = gapi.auth2.init({ 
       discoveryDocs:'https://www.googleapis.com/discovery/v1/apis/drive/v3/rest', 
       client_id: 'xxxxxxxxx.apps.googleusercontent.com', 
       api_key:'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', 
       cookiepolicy: 'single_host_origin', 
       scope: 'https://www.googleapis.com/auth/drive.file' 
      }); 
     oauthToken = googleUser.Zi.access_token; 
     }); 
     gapi.client.load('drive', 'v3', null); 
    }; 

function sendfile(formData){ 
     var myPostRequest = new ajaxRequest(); 
     myPostRequest.onreadystatechange = function(){ 
      if (myPostRequest.readyState == 4){ 
      if (myPostRequest.status == 200){ 
       var data = JSON.parse(this.responseText); 
       console.log('file uploaded: ', data) 
      } 
      console.log(''image upload not successful: ', this.responseText); 
      } 
     }; 
     myPostRequest.open('POST', 'https://www.googleapis.com/drive/v3/files?fields=contentHints%2Fthumbnail%2Cid%2CimageMediaMetadata%2CisAppAuthorized%2CmimeType%2CwebContentLink%2CwebViewLink&key=xxxxxxxxxxxxx', true); 
     myPostRequest.send(formData); 
    } 

logInButton.onClick = startApp(); 

i halten diese 401 Nachricht in Reaktion auf die Post-Anforderung auf dem Erhalten:

{ 
    "error": { 
    "errors": [ 
    { 
    "domain": "global", 
    "reason": "required", 
    "message": "Login Required", 
    "locationType": "header", 
    "location": "Authorization" 
    } 
    ], 
    "code": 401, 
    "message": "Login Required" 
} 
} 

Was bin ich dabei? Muss ich das Zugriffs-Token mit der Post-Anfrage liefern, oder bin ich einfach nicht richtig mit der richtigen Berechtigung und dem richtigen Umfang angemeldet?

Antwort

0

Code zur Arbeits Javascript Quickstart for Drive Vergleich, es sieht aus wie Sie ein Stück Code fehlt wie:

// Listen for sign-in state changes. 
      gapi.auth2.getAuthInstance().isSignedIn.listen(updateSigninStatus); 

      // Handle the initial sign-in state. 
      updateSigninStatus(gapi.auth2.getAuthInstance().isSignedIn.get()); 

die für Zustandsänderungen überwacht. Überprüfe den Link für die vollständige Code-Implementierung. Es ist das, was ich benutze, wenn ich mit Drive API in JS spiele.

Verwandte Themen