2016-12-14 102 views
2

我在做什么:运行谷歌选择器与脱机访问的OAuth令牌

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

我做了什么:

我已经成功地在我的应用程序使用docs提供了基本的代码集成到谷歌选择器。然后达到我想要的东西,我删除以下代码示例代码:

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

问题:

回答

0

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

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

相关问题