2013-03-27 4 views
18

Wystąpił błąd JS podczas otwierania okna udostępniania w aplikacji JavaScript za pomocą interfejsu API Dysku Google. Błąd: Niepowodzenie Błąd: Błąd składni: DOM Wyjątek 12.Nie można uzyskać okna dialogowego udostępniania interfejsu Google Drive API do pracy po zalogowaniu się na wiele kont.

Jednak okno dialogowe udostępniania działa poprawnie po wylogowaniu ze wszystkich kont Google, a następnie zalogowaniu się na jednym koncie. Jak tylko zaloguję się na drugie konto w nowej karcie, okno dialogowe udostępniania już nie działa i kończy się niepowodzeniem z powyższym błędem. To jest bardzo podobne do Calling showSettingsDialog() on the Google Drive SDK throws a Refused to display document because display forbidden by X-Frame-Options. Jednak mam zrobić debugowanie pokazany w przyjętym odpowiedzi na próżno, a mianowicie:

  • z „Otwórz za pomocą” URL, które mają konfigurację w ustawieniach Dysku Google SDK w API konsoli Google musi mieć taki sam domena strony, na której korzystasz z okna dialogowego udostępniania.
  • Obecnie musisz zainstalować aplikację na Dysku Google, aby umożliwić działanie osadzonego widżetu. Obecnie pracujemy nad usunięciem tego ograniczenia, ponieważ nie zawsze ma to sens, odkąd wprowadziliśmy wersję 2 interfejsu API.

Odpowiedni kod jest:

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

Czy istnieje jakiś sposób, aby uczynić tę pracę z wieloma kontami podpisanego w?

+0

Czy możesz sprawdzić swój test na www.draw.io? Jest to aplikacja Dysk Google z obsługą udostępniania i wieloma kontami. –

+0

@Boris Otrzymuję ten sam błąd z draw.io. Oto, jak powielić: 1) zalogować się na wiele kont Google. 2) przejdź do draw.io. 3) kliknij "Połącz z Google Drive". 4) Wybierz jedno z moich aktualnie zalogowanych kont Google, aby się połączyć. 5) Pozwól draw.io połączyć się z Dyskiem. 6) Kliknij Plik> Udostępnij. 7) Udostępniaj okna dialogowe z animowaną tarczą. 8) Po około 30 sekundach pojawi się komunikat, że "udostępnianie nie jest dostępne w tym momencie". 9) Otrzymuję to w narzędziach do Chrome: "SyntaxError: DOM Exception 12 docs.google.com/static/doclist/client/js/3362885397-v2-doclist_share.js:475" –

+0

Tak, to wygląda na błąd Google. Czy już go przesłałeś? –

Odpowiedz

4

możesz przeczytać uważnie dotyczące kwestii x-frame:

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

ale to, co myślę, że to nie jest możliwe, aby uwierzytelnić wszystkie konta na raz, ale obejście może do setOAuthToken do każdy z nich za każdym razem, gdy tego chcesz.

jest powiedziane tutaj w dokumentach google, że:

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.

źródło:

https://developers.google.com/drive/web/integrate-open

+0

Przeczytałem, że odpowiedź StackOverflow niestety nie widzę odsłoniętej metody 'setOAuthToken' na ShareClient. – CodingIntrigue

+0

czy próbowałeś używać oAuth2.0? https://developers.google.com/accounts/docs/OAuth2UserAgent – ProllyGeek

+1

Używam oAuth2 na zapleczu. Użytkownik jest już uwierzytelniony na określonym koncie. Po kliknięciu przycisku ShareClient – CodingIntrigue

2

Właśnie ostatnio dodane metodę setOAuthToken() do ShareClient który pozwala określić, które użytkownik okno powinien użyć. Więcej szczegółów w Drive SDK release notes.

+0

Cholera chłopaki; Po prostu chcę użyć skryptu w moim cholernym dokumencie, a teraz muszę naprawić kod, którego nie stworzyłem. Google zawsze tworzy rzeczy i łamie je dla każdego, kto ich używa. –