Google Picker с AccessToken не работает

Кажется, я не могу заставить Google Picker работать. Я аутентифицировал пользователя с помощью провайдера Oauth для PHP League

После аутентификации 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 не определен в createPicker

Я не знаю, почему это так. Я неправильно использую токен доступа?

Между прочим, мне нужно использовать бизнес accessToken с использованием технологии на стороне сервера, потому что у меня есть несколько поддоменов, и вы не можете использовать подстановочные знаки в Google Dev Console. Поэтому я не могу просто использовать стандартный пример подобный этому для аутентификации на стороне клиента. .

PS. Очевидно, что это не мои настоящие токены/секреты в блоке кода выше. Они были изменены.


person mikelovelyuk    schedule 12.01.2017    source источник


Ответы (1)


Вы можете проверить Руководство разработчика Google Loader для получения более подробной информации о том, как загружать API Google.

Как обсуждалось,

Чтобы загрузить API, включите следующий скрипт в заголовок своей веб-страницы.

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

Затем загрузите Google API с помощью google.load(module, version), где

  • module вызывает конкретный модуль API, который вы хотите использовать на своей странице.
  • version — это номер версии модуля, который вы хотите загрузить.

После вызова google.load вы можете использовать все загруженные модули на своей веб-странице.

Наконец, вы можете проверить Доступные API, особенно Руководство разработчика API Picker и убедитесь, что вы не пропустили важные функции при создании объекта Picker.

Надеюсь, это поможет!

person Teyam    schedule 13.01.2017