我正在编写一个简短的应用程序,用于将事件导出到Google日历。 (事件是从我的网站上的代码处理信息中获得的。)然而,当我点击按钮时,我写的脚本给了我一个奇怪的错误。我第一次点击按钮时遇到的错误是:Uncaught TypeError: Cannot call method 'setApiKey' of undefined
。但是,第二次单击按钮而不刷新页面时,错误消失,代码运行完美。
这是我的代码,你可以看到我在设置它之前定义了api键:
var exportCalendarToGoogle = function() {
var clientId = '38247913478902437.google@user...';
var scope = 'https://www.googleapis.com/auth/calendar';
var apiKey = 'JDKLSFDIOP109321403AJSL';
var withGApi = function() {
gapi.client.setApiKey(apiKey);
gapi.auth.init(checkAuth);
}
var checkAuth = function() {
gapi.auth.authorize({client_id: clientId, scope: scope, immediate: false}, handleAuthResult);
}
var handleAuthResult = function(authResult) {
if(authResult) {
gapi.client.load("calendar", "v3", exportCalendar);
} else {
alert("Authentication failed: please enter correct login information.");
}
}
//functions to format the calendar json input to Google calendar...
答案 0 :(得分:0)
gapi
的声音尚未完全加载
http://code.google.com/p/google-api-javascript-client/wiki/GettingStarted
有两个回调:
1)在加载gapi代码的URL中:
<script src="https://apis.google.com/js/client.js?onload=handleClientLoad"></script>
2)您还可以提供一个回调函数,让您知道何时加载了特定的API:
gapi.client.load('plus', 'v1', function() { console.log('loaded.'); });
我认为你的问题是1)