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

时间:2016-12-14 12:00:33

标签: google-api google-oauth2 google-picker

我在做什么:

我正在我的网页上整合Google Picker。这将允许用户从其Google云端硬盘中选择要在网络应用中使用的文件。在应用程序中,组中的人共享一个共同的谷歌驱动器(即他们都可以从帐户example@email.com选择文件),这是由组管理员通过他的电子邮件地址创建的。当管理员注册该帐户时,我们会执行OAuth并使用access_token针对我们在Google上的应用获取refresh_token(启用离线访问)。我打算在其他群组用户的帐户中尝试使用选择器来选择文件时,使用管理员的access_tokenrefresh-token

我做了什么:

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

gapi.load('auth', {'callback': onAuthApiLoad});

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

function handleAuthResult(authResult) {
  if (authResult && !authResult.error) {
    oauthToken = authResult.access_token;
    createPicker();
  }
}

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

.setOAuthToken("<access_token>")

但每次拨打picker.setVisible(true);时,我都会在iframe中显示一个屏幕要从在线存储中选择一个项目,请登录。

enter image description here

问题:

1 个答案:

答案 0 :(得分:1)

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

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