javascript - GoogleUser 对象没有 grantOfflineAccess 方法?

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

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

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

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

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

最佳答案

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

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

enter image description here

原来 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
});

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

关于javascript - GoogleUser 对象没有 grantOfflineAccess 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32848870/

相关文章:

node.js - 访问 token 过期后的 Google API 无效请求

已知所有边, Angular 和前两个点时查找三 Angular 形第三点的Javascript函数

Javascript:getElementById 与 getElementsById(两者都适用于不同页面)

javascript - 使用 gapi.auth.authorize 时访问被拒绝错误

python - 将 Google EmailSettings API python 代码从 OAuth1 移动到 OAuth2 服务帐户

javascript - 将 Google map 街景小人放在标记下方

session - 从 OAuth 2.0 身份验证网页完全注销 Google 帐户并重定向

javascript - 在事件上定位 d3.js 上的其他元素

javascript - 如何取消绑定(bind)并重新绑定(bind) on() 单击动画?

javascript - google youtube api查询字符问题