使用离线访问 oAuth 令牌运行 Google Picker

Jeh*_*lik 5 google-api google-oauth google-picker

我在做什么:

我正在我的页面上集成Google Picker。这将允许用户从他们的 Google Drive 中选择要在网络应用程序中使用的文件。在应用程序中,群组中的人共享一个通用的谷歌驱动器(即他们都可以从帐户 example@email.com 中选择文件),这是由群组管理员通过他的电子邮件地址创建的。当管理员的迹象,向上的,我们做的OAuth并获得该帐户access_tokenrefresh_token反对我们对谷歌的应用程序(离线访问启用)。当他们尝试使用选择器选择文件时,我计划在其他组用户的帐户上使用管理员的access_tokenrefresh-token

我做了什么:

我已使用docs 中提供的基本代码在我的应用程序中成功集成了 Google Picker 。然后为了实现我想要的,我从示例代码中删除了以下代码:

gapi.load('auth', {'callback': onAuthApiLoad});
Run Code Online (Sandbox Code Playgroud)

function onAuthApiLoad() {
  window.gapi.auth.authorize(
    {
      'client_id': clientId,
      'scope': scope,
      'immediate': false
    },
    handleAuthResult);
}
Run Code Online (Sandbox Code Playgroud)

function handleAuthResult(authResult) {
  if (authResult && !authResult.error) {
    oauthToken = authResult.access_token;
    createPicker();
  }
}
Run Code Online (Sandbox Code Playgroud)

而不是.setOAuthToken(oauthToken)我直接将刷新的 access_token 作为字符串传递(我通过 ajax 调用从我的服务器获取)。

.setOAuthToken("<access_token>")
Run Code Online (Sandbox Code Playgroud)

但是每次我打电话时,picker.setVisible(true);我都会在 iframe 中看到一个屏幕,上面写着为了从您的在线存储中选择一个项目,请登录。

在此处输入图片说明

问题:

And*_*ast 1

尝试添加sign in listener. 侦听器提供了一种自动响应当前用户登录会话中的更改的方法。例如,在启动方法初始化 Google Sign-In auth2 对象后,您可以设置侦听器来响应 auth2.isSignedIn 状态更改或 auth2.currentUser 更改等事件。

在每次使用令牌之前验证令牌可能是可能的,但这可能会在每次加载选择器以及在重新身份验证问题后使用令牌调用 API 端点时的罕见用例中增加大量额外开销,没有关于令牌无效的关键。您可以通过向 Google 授权服务器上的端点发出 Web 服务请求并对该 Web 服务请求的结果执行字符串匹配来验证令牌。