我想通过我自己的服务登录。这就是我现在所拥有的:
的manifest.json
"background": {
"scripts": ["background.js"]
}
background.js
chrome.browserAction.onClicked.addListener(function(tab) {
chrome.tabs.create({
url: 'index.html'
});
});
index.html 是所有扩展程序逻辑所在的位置。这里我有一个启动身份验证过程的函数:
function goLogin(callback)
{
var redirectUrl = chrome.identity.getRedirectURL('receiveToken');
chrome.identity.launchWebAuthFlow({
url: 'http://todolist.dev/app_dev.php/login?response_type=token&redirect_url=' + redirectUrl,
interactive: true
}, function(redirectUrl) {
if (!redirectUrl) {
return;
}
// Get an access token from the url and save it in localStorage
var queryString = decodeURIComponent(redirectUrl.substr(redirectUrl.indexOf('?') + 1));
var params = queryString.split('&');
var accessToken = null;
for (var i = 0; i < params.length; i++) {
params[i] = params[i].split('=');
if (params[i][0] == 'access_token') {
accessToken = params[i][1];
break;
}
}
localStorage.setItem('accessToken', accessToken);
callback();
});
}
问题是服务的登录页面有时的弹出窗口没有打开,也没有自动打开和关闭用户不批准访问的响应。有时当弹出窗口打开并且我尝试多次使用错误的凭据登录时,弹出窗口也会自动关闭(使用相同的“您不批准访问”响应)。在后端,我对许多登录尝试没有任何限制。
在后端,我有一个带有重写的AuthenticationSuccessHandler的FOSUserBundle(它执行默认成功处理程序所做的操作+返回访问令牌)。