Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can't get Google Drive API share dialog to work when signed into multiple accounts

I'm having a JS error when opening a share dialog in a Javascript application using the Google Drive API. The error is: Uncaught Error: Syntax Error: DOM Exception 12.

However, the sharing dialog works fine when I log out of all Google accounts and then log into just one account. As soon as I log into a second account in a new tab, the sharing dialog no longer works and fails with the above error.

This is very similar to Calling showSettingsDialog() on the Google Drive SDK throws a Refused to display document because display forbidden by X-Frame-Options. However, I have done the debugging shown in the accepted response to no avail, namely:

  • The "open with" URL that you have setup in your Google Drive SDK settings in the Google APIs Console has to have the same domain that the page where you are using the sharing dialog.
  • Currently you alos need your application to be installed on your Google Drive for the embeddable widget to work. We are currently working on removing this restriction as it does not always make sense since we launched v2 of the API.

The relevant code is:

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

Is there some way to make this work with multiple accounts signed in?

like image 651
Andy Fiedler Avatar asked Mar 27 '13 16:03

Andy Fiedler


1 Answers

you might want to read this carefully concerning the x-frame issue:

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

but what i think it is not possible to authenticate all the accounts at once , but a workaround maybe to setOAuthToken to each of them everytime you want to do so.

it is stated here in google documents that :

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.

source:

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

like image 155
ProllyGeek Avatar answered Sep 28 '22 07:09

ProllyGeek