Realtime-Playground の例に従って、アプリケーションで「ファイルを開く」を有効にしようとしています。認証は正常に機能し、空のファイルが gDrive に作成されます。ファイル選択用のポップアップを作成するコードは機能していませんが。次のコードは rt-playground の一部であり、私は同じものを使用しています:
var popupOpen = function () {
var token = gapi.auth.getToken().access_token;
var view = new google.picker.View(google.picker.ViewId.DOCS);
view.setMimeTypes("application/vnd.google-apps.drive-sdk." + realTimeOptions.appId);
var picker = new google.picker.PickerBuilder()
.enableFeature(google.picker.Feature.NAV_HIDDEN)
.setAppId(realTimeOptions.appId)
.setOAuthToken(token)
.addView(view)
.addView(new google.picker.DocsUploadView())
.setCallback(openCallback)
.build();
picker.setVisible(true);
}
上記の機能をボタンにも接続しました。認証前にボタンをクリックすると、次のエラーが表示されます
TypeError: 'undefined' is not an object (evaluating 'gapi.auth.getToken')
これは正しい動作だと思います。認証後にボタンをクリックすると、次のエラーが表示されます。
Uncaught TypeError: Cannot read property 'View' of undefined
エラーは、次のコード行から発生します。
var view = new google.picker.View(google.picker.ViewId.DOCS);
index.html ページに rt-playground で使用されるすべてのスクリプトを追加しました。認証が機能しているので、問題はそれが原因ではないと思います。フィードバックをいただければ幸いです。
これは私のコードです (テストに使用されますが、フィードバックは大歓迎です)。
Ps: 私が正しく行うかどうかわからないことの 1 つ (の 1 つ) は、appID の設定です。API コンソールを調べたところ、そのような名前の属性が見つからなかったので、プロジェクト ID と製品名を使用してみました。
アップデート
google.load('picker', '1'); を追加することにより 私のindex.htmlページ内で機能しました。このコードはリアルタイムプレイグラウンドには存在しませんが、なぜそれを使用する必要があるのか わかりません..