Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 刷新与重新加载(无法调用未定义的方法&x27;授权&x27;)GAPI_Javascript_Html_Google App Engine_Google Drive Api - Fatal编程技术网

Javascript 刷新与重新加载(无法调用未定义的方法&x27;授权&x27;)GAPI

Javascript 刷新与重新加载(无法调用未定义的方法&x27;授权&x27;)GAPI,javascript,html,google-app-engine,google-drive-api,Javascript,Html,Google App Engine,Google Drive Api,我有一个简单的gapi(谷歌硬盘)应用程序,我想连接到它。发生了一些奇怪的事情。我有演示的样品 为什么会这样 html应该与您的第一个代码片段一致。你需要弄清楚为什么“什么都没发生”。谷歌库中可能存在一些限制,阻止它调用模块。尝试用一个全局函数替换驱动器。\u handleClientLoad,该函数反过来调用您的模块。也许可以在控制台上洒一些日志或调试器,看看执行了什么和没有执行什么。不知道为什么,但我不能调用驱动器。\u handleClientLoad来自.client.js?onload

我有一个简单的gapi(谷歌硬盘)应用程序,我想连接到它。发生了一些奇怪的事情。我有演示的样品


为什么会这样

html应该与您的第一个代码片段一致。你需要弄清楚为什么“什么都没发生”。谷歌库中可能存在一些限制,阻止它调用模块。尝试用一个全局函数替换
驱动器。\u handleClientLoad
,该函数反过来调用您的模块。也许可以在控制台上洒一些日志或调试器,看看执行了什么和没有执行什么。

不知道为什么,但我不能调用
驱动器。\u handleClientLoad
来自
.client.js?onload=
函数,所以创建一个像bellow这样的公共函数是可行的

function handleClientLoad() {
  window.setTimeout(Drive._checkAuth, 1);
}

// ..client.js?onload=handleClientLoad

如果我在同一个文件中创建一个新的
函数test(){alert(1)}
,并将其称为
?onload=test
,它就不起作用了。我只是注意到了URL。你下载了js库的本地副本吗?是的,我尝试了
api.google.com/一个没有区别。这与跨域有关吗?必须按照快速入门说明从google加载google js。拥有自己的副本是无效的。如上所述,我尝试了它,但它仍然不起作用。您问题的答案可能是,为了刷新,js被缓存,因此不会重新解析,因此其中创建gapi对象的js语句没有被执行。
var Drive = {

  _CLIENT_ID: '61183508825.apps.googleusercontent.com',
  _SCOPES: 'https://www.googleapis.com/auth/drive.file',
  _rootid: null,
  authorised: false,

  _auth: function() {
    gapi.auth.authorize({
      'client_id': Drive._CLIENT_ID, 'scope': Drive._SCOPES, 'immediate': true
    },Drive._handleAuthResult);
  },

  _handleClientLoad: function() {
    window.setTimeout(Drive._auth, 1);
  },

  _handleAuthResult: function(authResult)  {
    if (authResult && !authResult.error) {
    // Access token has been successfully retrieved, requests can be sent to the API.
      Drive._validAuth();
    } else {
      // No access token could be retrieved, show the button to start the authorization flow.
      Drive._invalidAuth();
    }
  },

  _invalidAuth: function(){
    Drive.authorised = false;
    console.log("invalid authorization");
  },

  _validAuth: function(){
    Drive.authorised = true;
    console.log("successfully authorization");
  },

 }
function handleClientLoad() {
  window.setTimeout(Drive._checkAuth, 1);
}

// ..client.js?onload=handleClientLoad