0

Google Picker가 작동하지 않는 것 같습니다. PHP League Oauth ProviderAccessToken이있는 Google Picker가 작동하지 않습니다.

인증 후 내 사용자의 accessToken은 다음과 유사합니다.

ya67.Fi_dfioriogneegroig7Czdy54z0sdfdvnfr9fn38n3n93

이것은 피커를 렌더링하는 데 사용되는 Javascript 및 HTML 코드입니다.

<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> 

나의 accessToken은 {{ token|escape }}입니다.

"새 문서 추가"버튼을 클릭하면 다음 오류가 발생합니다.

Uncaught ReferenceError: google is not defined at createPicker

이유가 무엇인지 알 수 없습니다. 액세스 토큰을 올바르게 사용하지 않습니까?

덧붙여서, 나는 복수의 서브 도메인을 가지고 있기 (위해) 때문에, 서버 측 테크놀러지를 사용해 액세스 교환 사업을 실시 할 필요가 있습니다. 이것들은 Google Dev Console에서 와일드 카드로 사용할 수 없습니다. 따라서 표준 예제 인 like this one을 사용하여 클라이언트 측에서 인증 할 수는 없습니다.

PS - 분명히 위의 코드 블록에서 내 실제 토큰/비밀이 아닙니다. 그들은 변경되었습니다.

답변

0

Google API를로드하는 방법에 대한 자세한 내용은 Google Loader Developer's Guide을 확인하시기 바랍니다. 논의 된 바와 같이

,

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.

마지막으로, 당신은 Available APIs, 특히 Picker API Developer's Guide을 확인하고 Picker 개체를 만들 때 중요한 기능을 놓친 것을 확인 할 수 있습니다.

희망 하시겠습니까?