Google API 选择器:google 未定义

Google API Picker: google is not defined

我正在尝试为 google 文件选择器编写聚合物元素,但在创建选择器时我一直遇到相同的错误 google is not defined ...

google 被发现了一次,但我重构了我的代码,因为它不能像原来那样工作,而且它没有很好地编程。但是现在我不知道为什么它不起作用,我不知道它是怎么找到的google!

<paper-button id="pick">Pick file</paper-button>
<script>
Polymer({
    is: 'google-file-picker',

    properties: {
        apiKey: {
            type: String,
            observer: 'pickerInit'
        },
        apiLoaded: {
            type: Boolean,
            value: false
        }
    },

    attached: function() {
        var script = document.createElement('script');
        script.async = true;
        script.src = 'https://apis.google.com/js/api.js';
        script.onload = this.onApiLoad();
        document.head.appendChild(script);
    },

    pickerInit: function() {
        var oAuth2 = gapi.auth2.getAuthInstance().currentUser.get().getAuthResponse().access_token;
        if(this.apiLoaded && (this.apiKey !== null || this.apiKey !== undefined)) {
            var picker = new google.picker.PickerBuilder()
                .addView(google.picker.ViewId.SPREADSHEETS)
                .addView(new google.picker.DocsUploadView())
                .setOAuthToken(oAuth2)
                .setDeveloperKey(this.apiKey)
                .setCallback(this.onSelect)
                .build();
            picker.setVisible(true);
        }
    },

    onApiLoad: function() {
        this.apiLoaded = true;
        this.pickerInit();
    },

    onSelect: function(file) {
        this.fire('file-selected', {file: file});
    }
});
</script>

不知道为什么不行,导入了GoogleJsAPI然后想引用google对象!

您已经加载了主要的 Google JS 库(gapi)但是您没有加载库的实际选择器部分。

在您的 onApiLoad 方法中,在 google.picker 可用之前您需要这样的东西:

gapi.load(
    'picker',
    {'callback': this.pickerInit.bind(this)}
);