小弟想要製作一個按鈕,當按下按鈕後會跳出Google Account的驗證視窗
接著選取帳號後,會跳出Google Picker供選取該帳號的Google Drive檔案
程式碼如下:
<script type="text/javascript">
var developerKey = '1111111111111';
var clientId = "22222222222"
var scope = ['
https://www.googleapis.com/auth/photos'];
var pickerApiLoaded = false;
var oauthToken;
//Use the API Loader script to load google.picker and gapi.auth.
function
onApiLoad() {
console.log("onApiLoad");
gapi.load('auth2', {
'callback': onAuthApiLoad
});
gapi.load('picker', {
'callback': onPickerApiLoad
});
}
function
onAuthApiLoad() {
console.log("onAuthApiLoad");
window.gapi.auth2.authorize({
'client_id': clientId,
'scope': scope,
'immediate': true //True:Popup window everytime; False:No popup window
}, handleAuthResult);
}
function
onPickerApiLoad() {
console.log("onPickerApiLoad");
pickerApiLoaded = true;
createPicker();
}
function
handleAuthResult(authResult) {
console.log("handleAuthResult");
if (authResult && !authResult.error) {
oauthToken = authResult.access_token;
createPicker();
}
}
// Create and render a Picker object for picking user Photos.
function
createPicker() {
console.log("createPicker");
if (pickerApiLoaded && oauthToken) {
var picker = new google.picker.PickerBuilder()
addView(
new google.picker.DocsView()
.setIncludeFolders(true))
.setOAuthToken(oauthToken).setDeveloperKey(developerKey)
.setCallback(pickerCallback).build();
picker.setVisible(true);
}
}
<body>
<input id="search" type="button" value="Button" onclick="onApiLoad()"/>
</body>
但是當按下按鈕後,有跳出選取帳號的視窗,
選完視窗後,有時第一次可以成功跳出Picker,
但再次按下按鈕後,就不會跳出Picker了,而那時console的訊息如下:
Uncaught TypeError: (b || "").split is not a function
想請教要怎麼修改才能每次按下按鈕都能成功叫出Picker?
先謝謝各位大大了! m(_ _)m
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.124.165.66
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Soft_Job/M.1497428797.A.567.html
※ 編輯: qazsd (59.124.165.66), 06/14/2017 16:31:38
3F:→ SmallpTsai: 個, 你的 createPicker看來會被呼叫二次, 靠變數來決 06/14 20:06
4F:→ SmallpTsai: 定要不要進去, 連結裡的判斷方法似乎比較好理解 06/14 20:06
5F:→ qazsd: 我試著貼上樓上大大的code並且執行python -m http.server 06/15 15:04
6F:→ qazsd: 8000,然後開啟localhost:8000,還沒按"Pick File"按鈕就可 06/15 15:09
9F:→ qazsd: 沒有那些error messages 06/15 15:12
10F:→ qazsd: 這是我apache server需更改X-Frame-Options設定嗎 06/15 15:23
11F:→ qazsd: 解決了,原來是client_id多加了js裡的預設字串 06/15 17:22