【问题标题】:Google Drive API authentication, JavaScriptGoogle Drive API 身份验证、JavaScript
【发布时间】:2015-04-14 21:32:03
【问题描述】:

我在虚拟主机(以及 Python SimpleHTTPServer)上运行,我一直按照 Google 的说明进行操作,但我无法在页面刷新时弹出 Google 驱动器授权。

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

我将第一个代码块放在我的index.html 文件中,并将以下 2 个 sn-ps 放在 <script> 标记中 <body> 中。我用我在 Google 开发者控制台中创建的 ID 填写了 CLIENT_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>

【问题讨论】:

    标签: javascript google-drive-api google-oauth


    【解决方案1】:

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

    第一次应该是false,之后每小时刷新一次通常设置为true

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-17
      • 2018-01-14
      相关资源
      最近更新 更多