所以我试图启动对 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>