0

Ich kann nicht scheinen, dass Google Picker funktioniert. Ich habe meinen Benutzer authentifiziert mit der PHP League Oauth ProviderGoogle Picker mit AccessToken funktioniert nicht

Nach der Authentifizierung sieht ein AccessToken für meinen Benutzer in etwa so aus;

ya67.Fi_dfioriogneegroig7Czdy54z0sdfdvnfr9fn38n3n93

Dies ist mein Javascript und HTML-Code zum Rendern des Pickers;

<a href="{{ appContextInstallId }}/authenticate" class="btn info"> 
    <i class="icon-bolt"></i> Authenticate 
</a> 

<button onClick="createPicker()">Add a new document</button> 

<script type="text/javascript"> 

    var developerKey = 'erteetr43gg-V34y4httytjyjytjyttyjyjyjjy'; 
    var clientId = "373498750987-5dsfwerrwewerweewrl.apps.googleusercontent.com" 
    var appId = "373498750987" 

    var scope = ['https://www.googleapis.com/auth/drive']; 
    var pickerApiLoaded = false; 

    // Use the Google API Loader script to load the google.picker script. 

    // Create and render a Picker object for searching images. 
    function createPicker() { 
     var view = new google.picker.View(google.picker.ViewId.DOCS); 
     var picker = new google.picker.PickerBuilder() 
      .enableFeature(google.picker.Feature.NAV_HIDDEN) 
      .enableFeature(google.picker.Feature.MULTISELECT_ENABLED) 
      .setAppId(appId) 
      .setOAuthToken("{{ token|escape }}") 
      .addView(view) 
      .addView(new google.picker.DocsUploadView()) 
      .setDeveloperKey(developerKey) 
      .setCallback(pickerCallback) 
      .build(); 

     picker.setVisible(true); 
    } 

    // A simple callback implementation. 
    function pickerCallback(data) { 
     // makes an ajax call.... 
    } 
</script> 

<!-- The Google API Loader script. --> 
<script type="text/javascript" src="https://apis.google.com/js/api.js"></script> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 

Mein accessToken ist verfügbar unter {{ token|escape }}.

Wenn ich versuche, auf die Schaltfläche "Neues Dokument hinzufügen" zu klicken, erhalte ich den folgenden Fehler.

Uncaught ReferenceError: google is not defined at createPicker

Ich weiß nicht, warum das ist. Benütze ich das Zugriffs-Token nicht korrekt?

By the way, ich muß die accessToken Business-Technologie unter Verwendung von Server-Seite zu nehmen, weil ich mehr Sub-Domains habe und Sie können sie nicht in Google Dev Console Platzhalter. Daher kann ich nicht einfach ein Standardbeispiel like this one verwenden, um sich über die Clientseite zu authentifizieren.

PS - Offensichtlich sind das nicht meine echten Tokens/Secrets im Codeblock oben. Sie wurden geändert.

Antwort

0

Sie können unter Google Loader Developer's Guide nach weiteren Informationen zum Laden von Google-APIs suchen.

Wie diskutiert,

To load the APIs, include the following script in the header of your web page.

<script type="text/javascript" src="https://www.google.com/jsapi"></script>

Next, load the Google API with google.load(module, version), where

  • module calls the specific API module you wish to use on your page.
  • version is the version number of the module you wish to load.

After you call google.load , you can use all of the loaded modules in your web page.

Schließlich können Sie Available APIs überprüfen, speziell Picker API Developer's Guide und stellen Sie sicher, dass Sie nicht wichtige Funktionen verpasst haben, wenn ein Picker Objekt erstellen.

Hoffe, dass hilft!

Verwandte Themen