Google登录API:isSignedIn.get()返回不一致的值

Den*_*nis 6 google-api google-signin google-identity

我正在尝试检查用户是否已登录,但我得到的结果确实不一致,似乎涉及某种竞争条件.我基本上拿了谷歌开发者网站的代码:

gapi.load('auth2', function() {
  auth2 = gapi.auth2.init({
    client_id: 'my_client_id.apps.googleusercontent.com',
  });

  console.log(auth2.isSignedIn.get());

  setTimeout(function(){console.log(auth2.isSignedIn.get())},50);

  setTimeout(function(){console.log(auth2.isSignedIn.get())},500);

  setTimeout(function(){console.log(auth2.isSignedIn.get())},1000);
});
Run Code Online (Sandbox Code Playgroud)

出于某种原因,前两个返回false,第二个返回true.我已经双重检查,我已登录,所以看起来前两个应该返回true.我想念她的是什么?我看过文档,似乎没有任何东西表明发生了异步,我不确定在从isSignedIn调用中获得可靠结果之前我应该​​等待什么.

Den*_*nis 18

也许我在某个地方的文档中错过了它(如果我这样做,如果有人能指出我就好了),但看起来你可以使用Promises来确保GoogleAuth实例已准备就绪.以下是我为获得一致结果所做的工作:

gapi.load('auth2', function() {

  gapi.auth2.init({

    client_id: 'my_client_info.apps.googleusercontent.com',

  }).then(function(){

    auth2 = gapi.auth2.getAuthInstance();
    console.log(auth2.isSignedIn.get()); //now this always returns correctly        

  });
});
Run Code Online (Sandbox Code Playgroud)