5

ドライブでファイルを共有するために、Google のドキュメントに従っています:ファイルの共有

Google ドライブ インターフェースから Google ドライブにファイルをアップロードし、このファイルを Web アプリケーションから共有しようとすると、JavaScript コンソールに次のエラーが表示されます。

クロムで:

Refused to display 'https://drive.google.com/share?id=0B6UmN_AivG7SLWVYakF2Rk1CdDg&foreignServi…=postMessage&appId=958414147877&embedOrigin=http%3A%2F%2Fsandbox.velop.org' in a frame because it set 'X-Frame-Options' to 'SAMEORIGIN'. 

ファイアフォックスで:

[14:04:41.157] Load denied by X-Frame-Options: https://drive.google.com/share?id=0B6UmN_AivG7SLWVYakF2Rk1CdDg&foreignService=explorer&shareService=explorer&shareProtocolVersion=2&command=init&subapp=10&popupWindowsEnabled=true&shareUiType=default&rand=1370585078609&theme=2&client=postMessage&appId=958414147877&embedOrigin=http%3A%2F%2Fsandbox.velop.org does not permit cross-origin framing.

奇妙なことに、webapp からファイルを作成し、API を介してドライブにアップロードすると、問題なくファイルを共有できます。

さらに奇妙なことに、ドライブ内からファイルを1 回開くだけで十分です(ドライブに Web アプリをインストールしたので、Web アプリを使用してファイルを開くことができます)。後でドライブを使用しなくても、ファイルを共有できます。もうファイルを開きます。

この種の動作の原因は何ですか?

Drive SDK コンソールで、開く URL を次のように設定しました。http://sandbox.velop.org/my-google-drive/detail

ウェブアプリを使用してドライブでファイルを開くと、ドライブは次のようにリダイレクトします: http://sandbox.velop.org/my-google-drive/detail?state=%7B%22ids%22:%5B%220B6UmN_AivG7SLWVYakF2Rk1CdDg%22%5D,%22action%22:%22open%22,%22userId%22:%22105908447865504163566%22%7D(共有可能)

Web アプリでファイルを開くと、URL は次のようになります: http://sandbox.velop.org/my-google-drive/0B6UmN_AivG7SLWVYakF2Rk1CdDg/detail(以前にドライブから一度開いた場合にのみ共有できます)

編集:

ここで説明されているように、これが Google Drive API の標準的な動作であることに気付きました。

ユーザーがこれらのスコープを承認すると、アプリがユーザー用にインストールされ、ユーザーがアプリで作成または開いたファイルにアクセスできます。

アプリが任意のファイルを開いたり書き込んだりできるようにする方法はありますか?

アプリを登録するときにスコープを使用すると、https://www.googleapis.com/auth/driveこれが可能になると思いましたが、そうではないようです..

4

2 に答える 2

0

セキュリティ上の理由から、「開く URL」で指定された URL にいる場合を除き、ドライブはそのダイアログを使用できません。

現在の URL http://sandbox.velop.org/my-google-drive/0B6UmN_AivG7SLWVYakF2Rk1CdDg/detail!=http://sandbox.velop.org/my-google-drive/detail

そのため、URL 構造を変更することをお勧めします。多分何かのようなhttp://sandbox.velop.org/my-google-drive/detail?open=B6UmN_AivG7SLWVYakF2Rk1CdDg

これは、特に別のドメインで開発している場合は、非常に厄介です。

于 2013-09-15T13:00:01.793 に答える
0

私はまったく同じ問題に遭遇しています。

私のアプリは完全なドライブ スコープを要求しています (そのため、アプリはすべてのファイルにアクセスできる必要があります)。ただし、共有は、ユーザーが以前にドライブからファイルを開いたことがある場合にのみ機能します。ドライブから開かれたファイルの魔法の「while-listing」があるようです。

私が得る前にドライブから開かれていないファイルにアクセスすると...

「X-Frame-Options」が設定されているため、htps://drive.google.com/share?id=0534534543iTEhYamxfUnc2MnM&foreignServi…ent=postMessage&appId=46459361793&embedOrigin=http%3A%2F%2Fwww.editey.com」をフレームに表示することを拒否しました「SAMEORIGIN」へ。

...共有ボタンがフレーム内にないため、明らかに誤解を招きます。

指定された URL を新しいブラウザー タブで開くと、本当の根本原因のヒントが得られます。

私のアプリはドキュメントにアクセスできるはずですが、「共有ダイアログ」は、ドライブから以前に開かれたファイルへのアクセスのみを許可する別のアプリとして機能するように見えます。

于 2013-09-15T11:37:06.000 に答える