gpt4 book ai didi

javascript - chrome.identity.launchWebAuthFlow,如何清除用户缓存?

转载 作者:搜寻专家 更新时间:2023-11-01 04:43:21 26 4
gpt4 key购买 nike

我正在开发一个适用于 Gmail 的扩展程序,我希望能够允许用户在 Gmail 帐户之间切换并仍然使用 Google REST API。

我正在使用 chrome.identity.launchWebAuthFlow 获取 Google API 的 OAuth2 访问 token 。

此工作流打开一种模式类型的 chrome webview。顶部没有网址栏。第一次输入用户名和密码,然后允许请求的范围时,webview 关闭。然后,我的应用会收到包含访问 token 的重定向 URI。太好了。

切换用户时出现问题。人们会认为这就像检查新电子邮件是否已登录一样简单,然后再次执行 chrome.identity.launchWebAuthFlow 以获取新 token 。

不幸的是,第一个登录的用户似乎仍然缓存在系统中。

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 webview。似乎有一些与之关联的 cookie。我想知道如何从 webview 中清除持久数据。

唯一似乎有效的是完全关闭 chrome。不是我的扩展可接受的用户体验。

如果有人对此有任何指示,请提前致谢。

最佳答案

使用 chrome.identity.removeCachedAuthToken(object details, function callback) 方法。

Removes an OAuth2 access token from the Identity API's token cache.

If an access token is discovered to be invalid, it should be passed to removeCachedAuthToken to remove it from the cache. The app may then retrieve a fresh token with getAuthToken.

关于javascript - chrome.identity.launchWebAuthFlow,如何清除用户缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26130386/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com