Google 驱动器 API 身份验证,JavaScript

Google Drive API authentication, JavaScript

我 运行 在虚拟主机(以及 Python SimpleHTTPServer)上,我一直在遵循 Google 的说明,但我无法获得 Google 驱动授权在页面刷新时弹出。

https://developers.google.com/drive/web/auth/web-client

我将第一个代码块放在我的 index.html 文件中,并将以下 2 个片段放在 <body> 内的 <script> 标记中。我在 CLIENT_ID 中填写了我在 Google 开发人员控制台中创建的 ID...我缺少什么?

 <html>
      <head>
        <script type="text/javascript">
          var CLIENT_ID = '1052173400541-355uhjrflurk7fmlon0r5umnn12i9ag3.apps.googleusercontent.com';
          var SCOPES = [
              'https://www.googleapis.com/auth/drive.file',
              'email',
              'profile',
              // Add other scopes needed by your application.
            ];

          /**
           * Called when the client library is loaded.
           */
          function handleClientLoad() {
            checkAuth();
          }

          /**
           * Check if the current user has authorized the application.
           */
          function checkAuth() {
            gapi.auth.authorize(
                {'client_id': CLIENT_ID, 'scope': SCOPES, 'immediate': true},
                handleAuthResult);
          }

          /**
           * Called when authorization server replies.
           *
           * @param {Object} authResult Authorization result.
           */
          function handleAuthResult(authResult) {
            if (authResult) {
              // Access token has been successfully retrieved, requests can be sent to the API
            } else {
              // No access token could be retrieved, force the authorization flow.
              gapi.auth.authorize(
                  {'client_id': CLIENT_ID, 'scope': SCOPES, 'immediate': false},
                  handleAuthResult);
            }
          }
        </script>
        <script type="text/javascript" src="https://apis.google.com/js/client.js?onload=handleClientLoad"></script>
      </head>
      <body>
        <h1>welcome to google_drive.local</h1>
        <script type='text/javascript'>
            /**
            * Load the Drive API client.
             * @param {Function} callback Function to call when the client is loaded.
             */
            function loadClient(callback) {
              gapi.client.load('drive', 'v2', callback);
            }

            /**
     * Print a file's metadata.
     *
     * @param {String} fileId ID of the file to print metadata for.
     */
            function printFile(fileId) {
              var request = gapi.client.drive.files.get({
                  'fileId': fileId
              });
              request.execute(function(resp) {
                if (!resp.error) {
                  console.log('Title: ' + resp.title);
                  console.log('Description: ' + resp.description);
                  console.log('MIME type: ' + resp.mimeType);
                } else if (resp.error.code == 401) {
                  // Access token might have expired.
                  checkAuth();
                } else {
                  console.log('An error occured: ' + resp.error.message);
                }
              });
            }
        </script>
      </body>
    </html>

通过设置 immediate=true,您可以抑制身份验证弹出窗口。

第一次应该是false,以后每小时刷新一般设置为true