[請益] Google驗證有時可以有時不行

看板Soft_Job (軟體人)作者時間8年前 (2017/06/14 16:26), 8年前編輯推噓0(0011)
留言11則, 3人參與, 最新討論串1/1
小弟想要製作一個按鈕,當按下按鈕後會跳出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://www.ptt.cc/bbs/Soft_Job/M.1497428797.A.567.html ※ 編輯: qazsd (59.124.165.66), 06/14/2017 16:31:38

06/14 17:13, , 1F
建議程式碼可以放 https://jsfiddle.net/
06/14 17:13, 1F

06/14 20:05, , 2F
06/14 20:05, 2F

06/14 20:06, , 3F
個, 你的 createPicker看來會被呼叫二次, 靠變數來決
06/14 20:06, 3F

06/14 20:06, , 4F
定要不要進去, 連結裡的判斷方法似乎比較好理解
06/14 20:06, 4F

06/15 15:04, , 5F
我試著貼上樓上大大的code並且執行python -m http.server
06/15 15:04, 5F

06/15 15:09, , 6F
8000,然後開啟localhost:8000,還沒按"Pick File"按鈕就可
06/15 15:09, 6F

06/15 15:10, , 7F
透過Chrome的console看到此訊息:http://imgur.com/a/XwBLe
06/15 15:10, 7F

06/15 15:12, , 8F
但是github上示範的網頁(https://tinyurl.com/y8amzak7)
06/15 15:12, 8F

06/15 15:12, , 9F
沒有那些error messages
06/15 15:12, 9F

06/15 15:23, , 10F
這是我apache server需更改X-Frame-Options設定嗎
06/15 15:23, 10F

06/15 17:22, , 11F
解決了,原來是client_id多加了js裡的預設字串
06/15 17:22, 11F
文章代碼(AID): #1PGFCzLd (Soft_Job)
文章代碼(AID): #1PGFCzLd (Soft_Job)