chrome.identity.launchWebAuthFlow,如何清除用户缓存
chrome.identity.launchWebAuthFlow, how to clear user cache?
我正在开发一个适用于Gmail的扩展,我希望能够允许用户在Gmail帐户之间切换,并且仍然使用Google REST API。
我正在使用chrome.identity.launchWebAuthFlow获取Google API的OAuth2访问令牌。
此工作流打开了一种模式类型的chrome Web视图。顶部没有url栏。在第一次输入用户名和密码,然后允许请求的作用域后,Web视图将关闭。然后,我的应用程序接收包含访问令牌的重定向URI。太棒了
切换用户时出现问题。有人会认为这很简单,只需检查是否登录了新的电子邮件,然后再次执行chrome.identity.lonchWebAuthFlow以获取新的令牌。
不幸的是,第一个登录的用户似乎仍缓存在系统中。
function webAuthFlow(userEmail, forceApprovalPrompt, xhrCallback) {
var baseUrl = 'https://accounts.google.com/o/oauth2/auth';
var forceApprovalPrompt = forceApprovalPrompt || 'auto';
var urlParams = {
'redirect_uri' : 'https://inobjcmbajbmllkgkigemcfnikdmlidn.chromiumapp.org/callback',
'response_type' : 'token',
'client_id' : 'not shown here',
'scope' : 'https://mail.google.com/ https://www.google.com/m8/feeds/',
'approval_prompt' : 'force',
'include_granted_scopes' : 'true'
};
var providerDetails = {
url : baseUrl + '?' + stringify(urlParams),
interactive : true
}
var xhrCallback = xhrCallback || false;
console.log(xhrCallback);
var callback = function(responseUrl) {
var params = {},
queryString = responseUrl.split('#')[1],
regex = /([^&=]+)=([^&]*)/g,
m,
validateUrl = 'https://www.googleapis.com/oauth2/v1/tokeninfo'
while (m = regex.exec(queryString)) {
params[decodeURIComponent(m[1])] = decodeURIComponent(m[2]);
}
validateToken(params.access_token, function() { storeToken(params.access_token, userEmail) }, xhrCallback);
};
chrome.identity.launchWebAuthFlow(providerDetails, callback);
};
我试着通过将approval_prompt设置为"force"来检查弹出的chrome网络视图。似乎有一些cookie与之相关。我想知道如何从网络视图中清除持久数据。
唯一能起作用的是完全关闭chrome。对于我的扩展来说,这不是一个可接受的用户体验。
如果有人对此有任何意见,请提前感谢。
如果您想删除以下内容:
- 从令牌缓存中删除访问令牌
- 删除用户的帐户首选项
- 从所有身份验证流中删除用户
然后你可以使用以下两种方式之一:
-
使用这行代码删除所有身份验证令牌
chrome.identity.clearAllCachedAuthTokens(() => undefined)
-
分别删除每个身份验证令牌。有关更多信息,请查看以下参考:removeCachedAuthToken
chrome.identity.removeCachedAuthToken( details: InvalidTokenDetails, callback?: function, )
使用chrome.identity.removeCachedAuthToken(object details, function callback)
方法。
从Identity API的令牌缓存中删除OAuth2访问令牌。
如果发现访问令牌无效,则应将其传递给removeCachedAuthToken以将其从缓存中删除。然后,应用程序可以使用getAuthToken检索新的令牌。
- 用户对警报消息的输入是否需要清除
- 当用户移回登录页面时清除会话
- 当错误时清除cookie 使用护照反序列化用户.js
- 设置间隔不清除用户离开窗口
- 清除域上所有用户的具有设定值的单个 Cookie
- 如何使用重置按钮清除用户选择的值
- 我如何知道用户何时清除我的应用程序的缓存
- 如何从待办事项列表中清除元素(使用用户添加的元素)
- chrome.identity.launchWebAuthFlow,如何清除用户缓存
- 如何使用javascript保护用户清除复选框
- 当用户输入用户名时,清除默认文本
- 基于用户输入从列表中清除项目
- 在Windows身份验证- ASP.Net中,强制用户在会话清除后重新登录
- 如何在用户离开页面之前与服务器同步并清除会话
- 当用户关闭窗口时清除本地存储
- 当用户以javascript上传无效文件时,清除输入文件字段
- 如何清除httpsession,如果用户在java中关闭浏览器
- 如何在用户单击图像时清除页面并计算输出
- 根据用户的选择清除命名范围-差不多了
- 当用户清除字段时检测