GoogleUser对象没有grantOfflineAccess方法?

时间:2015-09-29 16:09:44

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

我正在使用Google Sign-in对我网站上的用户进行身份验证,然后再单独询问离线权限。

根据文档,GoogleUser对象应该有一个方法“grantOfflineAccess”,该方法会提示其他权限,而不会提示用户确认其帐户。然而,在Firebug中检查对象时,我发现所描述的所有其他方法,但不是grantOfflineAccess。

我有一个使用GoogleAuth对象的grantOfflineAccess方法的解决方法但强制用户确认他们的帐户(我希望避免,因为他们只是在登录期间执行了该步骤)。我想保持登录并单独授权离线访问提示,以便我可以在它们之间进行一些验证。

文档错误/过时了吗?有没有其他方法可以达到我想要的行为?

1 个答案:

答案 0 :(得分:8)

我自己检查过,方法确实不存在。我认为这实际上是文档中的错误。

所以我稍微探讨了一下,找到了另一种方法来实现你想要的东西:有一个名为authuser的(显然是未记录的)参数。它基本上是您登录的帐户的索引(第一个为0,第二个为1,...)。 Google在内部使用GoogleDocs等内容。经过一些更多的讨论,我在GoogleUser数据中找到了authuser:

enter image description here

原来wcgetAuthResponse()数据,因此您可以使用以下代码访问此索引:gapi.auth2.getAuthInstance().currentUser.get().getAuthResponse().session_state.extraQueryParams.authuser

您现在可以使用此参数调用grantOfflineAccess GoogleAuth,从而产生以下调用:

var auth = gapi.auth2.getAuthInstance();
var user = auth.currentUser.get();
auth.grantOfflineAccess({
  authuser: user.getAuthResponse().session_state.extraQueryParams.authuser
});

这将打开没有帐户选择器的提示:-)希望我能帮忙!