GoogleUser 对象没有 grantOfflineAccess 方法?

GoogleUser object does not have grantOfflineAccess method?

我正在使用 Google Sign-in 对我网站上的用户进行身份验证,然后作为一个单独的步骤请求离线权限。

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

我有一个使用 GoogleAuth 对象的 grantOfflineAccess 方法的解决方法,但这会强制用户确认他们的帐户(我想避免这种情况,因为他们只是在登录)。我想将登录和授权离线访问提示分开,以便我可以在它们之间进行一些验证。

文档是否wrong/outdated?还有另一种方法可以获得我想要的行为吗?

我自己查了一下,确实没有这个方法。我认为这实际上是文档中的一个错误。

所以我四处寻找了一下,找到了另一种方法来实现你想要的:有一个(显然没有记录的)参数名为 authuser。它基本上是您登录帐户的索引(第一个为 0,第二个为 1,...)。 Google 在内部将其用于 GoogleDocs 等内容。经过更多的探索,我在 Google 用户数据中找到了 authuser:

原来 wcgetAuthResponse() 数据,因此您可以通过以下方式访问此索引:gapi.auth2.getAuthInstance().currentUser.get().getAuthResponse().session_state.extraQueryParams.authuser.

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

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

这将在没有帐户选择器的情况下打开提示:-)希望我能提供帮助!