簡體   English   中英

適用於Google Drive Picker API的Polymer HTML5 Web組件-目標原點錯誤

[英]Polymer HTML5 Web Component for Google Drive Picker API - target origin error

因此,我嘗試啟動對Google Picker API的API調用,並且可以連接我的帳戶,但是之后我的API密鑰無效。

API和客戶端號是在我的Google開發者控制台中找到的確切名稱,並且該API是為網絡瀏覽器應用程序創建的。

在控制台中:

無法在“ DOMWindow”上執行“ postMessage”:提供的目標原點(“ https://docs.google.com ”)與收件人窗口的原點(“ http://w1nz.co ”)不匹配。

未捕獲的ReferenceError:未定義init

我已經追蹤到PickerBuilder在.build .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>

我只是通過評論下面的行來嘗試的..

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

它的工作原理非常好..請嘗試!!!

我還沒有自己嘗試過,但是您不會嘗試從加密連接(ssl)來源到達未加密的目標嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM