2013-03-27 39 views
18

我在使用Google Drive API的Javascript應用程序中打開共享對話框時出現JS錯誤。錯誤是:未捕獲的錯誤:語法錯誤:DOM異常12.登錄到多個帳戶後無法使Google Drive API共享對話框正常工作

但是,當我退出所有Google帳戶並登錄到一個帳戶時,共享對話框正常工作。只要我登錄到新選項卡中的第二個帳戶,共享對話框將不再起作用,並會因上述錯誤而失敗。

這與Calling showSettingsDialog() on the Google Drive SDK throws a Refused to display document because display forbidden by X-Frame-Options非常相似。不過,我已經做在接受響應無果,即顯示調試:

  • 的URL「打開方式」,你必須在谷歌API控制檯您的谷歌驅動器SDK設置的設定必須具有相同的域名,即您正在使用共享對話框的頁面。
  • 目前,您需要將您的應用程序安裝到您的Google雲端硬盤上才能使可嵌入小工具正常工作。我們目前正在努力消除這一限制,因爲我們啓動了API的第2版並不總是有道理。

相關的代碼是:

var shareClient = new gapi.drive.share.ShareClient(rtpg.realTimeOptions.appId); 
shareClient.setItemIds([rtclient.params['fileId']]); 
shareClient.showSettingsDialog(); 

有一些方法,使在簽署多個帳戶這項工作?

+0

你能檢查你的測試用例與www.draw.io嗎?這是一款Google雲端硬盤應用,支持共享和多個帳戶。 – 2013-03-28 13:54:49

+0

@Boris我得到了與draw.io相同的錯誤。以下是重現的方法:1)登錄多個Google帳戶。 2)去draw.io. 3)點擊「連接Google雲端硬盤」。 4)選擇我當前登錄的Google帳戶之一進行連接。 5)讓draw.io與Drive連接。 6)單擊文件>共享。 7)與動畫微調器共享對話加載。 8)大約30秒後,出現一條消息,指出「此時共享不可用」。 9)我在Chrome開發工具中得到了這個:「SyntaxError:DOM Exception 12 docs.google.com/static/doclist/client/js/3362885397-v2-doclist_share.js:475」 – 2013-03-31 20:39:06

+0

是的,這看起來像Google bug。你提交了嗎? – 2013-04-01 12:45:01

回答

4

你可能想仔細閱讀本關於X框問題:

Google Drive API, can't open standard sharing dialog via JS (x-frame-options error)

但我認爲這是不可能一下子所有的帳戶進行身份驗證,但有解決方法也許到setOAuthToken到他們每個人每次你想這樣做。

正是在這裏指出在谷歌文檔:

Important:The setOAuthToken function allows an app to use the current auth token to determine which Google account the picker uses to display the files. If a user is signed into multiple Google accounts, this allows the picker to display the files of the appropriate authorized account.

來源:

​​

+0

我讀過StackOverflow答案,不幸的是我沒有在ShareClient上看到暴露的'setOAuthToken'方法。 – CodingIntrigue 2014-03-25 14:29:00

+0

您是否嘗試過使用oAuth2.0? https://developers.google.com/accounts/docs/OAuth2UserAgent – ProllyGeek 2014-03-25 14:48:38

+1

我在後端使用oAuth2。用戶也已經針對特定帳戶進行了身份驗證。這只是我在使用ShareClient時遇到了障礙 – CodingIntrigue 2014-03-25 14:50:14

2

我們最近剛剛增加了一個setOAuthToken()方法將ShareClient,使您可以指定哪些用戶對話框應該使用。 Drive SDK中的更多詳細信息release notes

+0

該死的你們;我只想在我自己該死的文檔中使用腳本,現在我需要修復我沒有創建的代碼。 Google總是在創造一些東西,併爲每一個使用它們的人打破它們。 – 2017-03-15 03:37:33

相關問題