4

間違っている場合は訂正してください。よくある質問によると、javascript クライアント ライブラリhttps://developers.google.com/api-client-library/javascript/reference/referencedocsは Web アプリケーションにのみ使用されることを読みました。 . ユーザーがGoogleドライブに写真をアップロードできるようにするphonegapを使用してモバイルアプリを作成しています。私はこれらのリンクを通過しています: https://developers.google.com/drive/v2/reference/files/insert

ご覧のとおり、ファイルのアップロードに JavaScript クライアント ライブラリを使用します。そのライブラリを使用せずにそれを行う方法はありますか。もしそうなら、純粋なjsまたはjqueryを使用するにはどうすればよいですか?

ありがとう


ジュニョンさんありがとう…ログインして認証するところまでできました。今私がやろうとしているのは、ファイルをドライブにアップロードすることです。私が目にするすべての例は、JS クライアント ライブラリを使用しています。https://developers.google.com/drive/quickstart-js gapi.client.request を使用せずに同じことを実行したい。シンプルなPOSTを使いたい。これが私のコードです

          const boundary = '-------314159265358979323846';
          const delimiter = "\r\n--" + boundary + "\r\n";
          const close_delim = "\r\n--" + boundary + "--";

          var reader = new FileReader();
          var fileContent = this.$.fileInput.getFiles()[0];
          reader.readAsBinaryString(fileContent);
          reader.onload = function(e) {
              var contentType = fileContent.type || 'application/octet-stream';
              var metadata = {
              'title': fileContent.name,
              'mimeType': contentType
              };
              var base64Data = btoa(reader.result);
              var multipartRequestBody =
              delimiter +
              'Content-Type: application/json\r\n\r\n' + JSON.stringify(metadata) + delimiter + 'Content-Type: ' + contentType + '\r\n' + 'Content-Transfer-Encoding: base64\r\n' + '\r\n' + base64Data + close_delim;

              var driveAjax = new enyo.Ajax({
                     url: 'https://www.googleapis.com/upload/drive/v2/files',
                     method: 'POST',
                     contentType: 'multipart/mixed; boundary="' + boundary + '"',
                     postBody: multipartRequestBody
                  });
              driveAjax.response(this, "uploadSuccess");
              driveAjax.error(this, "processError");
              driveAjax.go({
                    uploadType:'multipart'
              });

ご覧のとおり、gapi.client.request 部分を単純な ajax 呼び出しに置き換えました。しかし、これはうまくいかないようです。ところで、enyo js フレームワークを使用しています。これで問題を見つけることができますか?

4

1 に答える 1

2

Drive API と Phonegap の統合に問題はありましたか?

Drive API は基本的に HTTP リクエストであり、純粋な Javascript ですべて実行できます。したがって、Files.insert() の jQuery AJAX 呼び出しを使用できます。ただし、Javascript クライアントを使用することをお勧めします。JS クライアント ライブラリを使用した OAuthの例を次に示します。この例を Phonegap アプリケーションで試して、問題がある場合はもう一度質問してください。

于 2013-07-01T08:19:56.573 に答える