我在做什么:
我正在我的网页上整合Google Picker。这将允许用户从其Google云端硬盘中选择要在网络应用中使用的文件。在应用程序中,组中的人共享一个共同的谷歌驱动器(即他们都可以从帐户example@email.com选择文件),这是由组管理员通过他的电子邮件地址创建的。当管理员注册该帐户时,我们会执行OAuth并使用access_token
针对我们在Google上的应用获取refresh_token
(启用离线访问)。我打算在其他群组用户的帐户中尝试使用选择器来选择文件时,使用管理员的access_token
和refresh-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中显示一个屏幕要从在线存储中选择一个项目,请登录。
问题:
答案 0 :(得分:1)
尝试添加sign in listener
。监听器提供了一种自动响应当前用户登录会话中的更改的方法。例如,在启动方法初始化Google Sign-In auth2对象后,您可以设置侦听器以响应auth2.isSignedIn状态更改或auth2.currentUser中的更改等事件。