【问题标题】:GoogleUser object does not have grantOfflineAccess method?GoogleUser 对象没有 grantOfflineAccess 方法?
【发布时间】:2015-12-27 05:20:45
【问题描述】:
我正在使用Google Sign-in 对我网站上的用户进行身份验证,然后作为单独的步骤请求离线权限。
根据文档,GoogleUser 对象应该有一个方法“grantOfflineAccess”,它会提示用户提供额外的权限而不提示用户确认他们的帐户。但是在 Firebug 中检查对象时,我发现描述的所有其他方法,但没有 grantOfflineAccess。
我有一个使用 GoogleAuth 对象的 grantOfflineAccess 方法的解决方法,但这会强制用户确认他们的帐户(我想避免这种情况,因为他们刚刚在登录期间执行了该步骤)。我想将登录和授权离线访问提示分开,以便我可以在它们之间进行一些验证。
文档是否错误/过时?还有另一种方法来获得我想要的行为吗?
【问题讨论】:
标签:
javascript
google-api
google-oauth
google-signin
【解决方案1】:
我自己查了一下,这个方法真的不存在。我认为这实际上是文档中的一个错误。
所以我摸索了一下,找到了另一种方法来实现你想要的:有一个名为authuser 的(显然未记录的)参数。它基本上是您登录的帐户的索引(第一个为 0,第二个为 1,...)。 Google 在内部将其用于 GoogleDocs 等内容。经过一番摸索后,我在 GoogleUser 数据中找到了 authuser:
原来wc 是getAuthResponse() 数据,因此您可以通过gapi.auth2.getAuthInstance().currentUser.get().getAuthResponse().session_state.extraQueryParams.authuser 访问此索引。
您现在可以使用此参数调用GoogleAuth 的grantOfflineAccess,从而产生以下调用:
var auth = gapi.auth2.getAuthInstance();
var user = auth.currentUser.get();
auth.grantOfflineAccess({
authuser: user.getAuthResponse().session_state.extraQueryParams.authuser
});
这将在没有帐户选择器的情况下打开提示 :-) 希望我能提供帮助!