1

所以我试图启动对 Google Picker API 的 API 调用,我可以连接我的帐户,但之后它说我的 API 密钥无效。

API 和客户端编号与在我的 Google 开发人员控制台中找到的完全相同,并且 API 是为 Web 浏览器应用程序创建的。

这是在控制台中:

无法在“DOMWindow”上执行“postMessage”:提供的目标来源(“ https://docs.google.com ”)与收件人窗口的来源(“ http://w1nz.co ”)不匹配。

未捕获的 ReferenceError:未定义 init

我已经跟踪到 PickerBuilder.build()在线时发生的此错误。

您可以在http://w1nz.co/polymer-app/上实时查看


这是一个 Polymer HTML5 Web 组件,因此<template>标签内的任何内容都会呈现到页面。

我的代码:

<link rel="import" href="/polymer-app/bower_components/polymer/polymer.html">
<polymer-element name="drive-save" noscript>
    <template>
        <script src="https://apis.google.com/js/platform.js"></script>
        <script>
            var clientId = '185720521988-0vifnru5llc3mqj1k7evil99vnghagid.apps.googleusercontent.com';
            var developerKey = 'AIzaSyDDTPAGVNFWG2czBBx8QFjn4Vg3KZoEccE';
            var oauthToken;

            function onApiLoad() {
                gapi.load('auth', authenticateWithGoogle);
                gapi.load('picker');
            }
            function authenticateWithGoogle() {
            window.gapi.auth.authorize({
              'client_id': clientId,
              'scope': ['https://www.googleapis.com/auth/drive']
            }, handleAuthentication);
            }
            function handleAuthentication(result) {
                console.log(result);
                if(result && !result.error) {
                  oauthToken = result.access_token;
                  setupPicker();
                }
            }

            function setupPicker() {
                var picker = new google.picker.PickerBuilder().
                .addView(new google.picker.DocsUploadView())
                  setOAuthToken(oauthToken).
                  setDeveloperKey(developerKey).
                  setCallback(pickerCallback).
                  build();
                picker.setVisible(true);
            }
            function pickerCallback(data) {
                console.log(data);
                if (data.action == google.picker.Action.PICKED) {
                  alert(data.docs[0].name);
                } else if (data.action == google.picker.Action.CANCEL) {
                  alert('goodbye');
                }
            }
        </script>
        <script src="https://apis.google.com/js/api.js?onload=onApiLoad"></script>
        <p>Hello World</p>
    </template>
</polymer-element>
4

2 回答 2

1

我尝试通过评论以下行来尝试..

setDeveloperKey(developerKey) //No need to set dev key

它工作得很好..请试试!!!

于 2015-07-21T12:02:46.803 回答
0

我自己还没有尝试过,但是您不会尝试从加密连接(ssl)来源到达未加密的目标吗?

于 2014-11-28T01:17:52.250 回答