【问题标题】: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:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-11
      • 2014-05-17
      • 1970-01-01
      • 2013-08-17
      相关资源
      最近更新 更多