Facebook注销不清楚缓存 [英] Facebook logout is not clear cache
问题描述
我正在使用webapi 2 mvc anguler.js的Facebook身份验证,Mvc fb登录成功。当我从Facebook注销时它工作得很好。但是当试图登录另一个fb时,a / c缓存仍保留在凉亭中并从缓存中获取详细信息或使用之前的
详细信息登录。
这是我的退出代码
控制器
$ scope.logOut = function(){
authService.logOut ();
var logoutWindow;
var fbToken = localStorageService.get('fbToken');
if(fbToken){
var fblogoutUrl ='https://www.facebook.com/logout.php?access_token='+ fbToken +'& next = http://google.com';
logoutWindow = $ window.open(fblogoutUrl,'_ blank','location = no,toolbar = no');
$ timeout(function(){
logoutWindow.close();
localStorageService.remove('fbToken');
},1000);
}
$ route.reload();
$ cacheFactory.get('$ http')。removeAll();
$ scope.authentication = authService.authentication;
$ scope.loginData.email =;
$ scope.loginData.pasword =;
$ location.path('/ index');
服务
var _logOut = function(){
返回$ http。 post(serviceBase +'api / Account / Logout')。then(function(response){
localStorageService.remove('authorizationData');
_authentication.isAuth = false;
_authentication.userName =;
_authentication.role =;
_authentication.fullName =;
_authentication.useRefreshTokens = false;
});
};
服务器端代码
[路线(退出)]
public IHttpActionResult Logout()
{
Authentication.SignOut(CookieAuthenticationDefaults.AuthenticationType);
返回Ok();
}
我的尝试:
//登录控制器
$ scope.authExternalProvider = function(provider){
var redirectUri = location.protocol +'//'+ location.host + '/app/views/authComplete.html';
var externalProviderUrl = ngAuthSettings.apiServiceBaseUri +api / Account / ExternalLogin?provider =+ provider
+& response_type = token& client_id =+ ngAuthSettings.clientId
+& redirect_uri =+ redirectUri;
$ window。$ windowScope = $ scope;
var oauthWindow = $ window.open(externalProviderUrl,Authenticate Account,location = 0,status = 0,width = 600,height = 750);
};
$ scope.authCompletedCB =函数(片段){
console.log(片段);
if (片段&& fragment.external_access_token)
localStorageService.set('fbToken',fragment.external_access_token);
$ scope。$ apply(function() {
var externalData = {provider:fragment.provider,externalAccessToken:fragment.external_access_token};
authService.obtainAccessToken(externalData).then(function(response){
$ scope.authentication = authService.authentication;
$ location.path('/ index');
},
函数(错误){
$ scope.message = err.Message;
if(fragment.haslocalaccount =='False' )$
authService.logOut();
authService.externalAuthData = {
provider:fragment.provider ,
userName:fragment.external_user_name,
externalAccessToken:fragment.external_access_token,
email:fragment.external_email
};
if(authService.externalAuthData。 email == undefined || authService.externalAuthData.email ==|| authService.externalAuthData.email == null){
$ location.path('/ associate');
} else {
$ controller ('associateController',{$ scope:$ scope})
$ scope.registerExternal();
}
}
});
});
} $ / b
//关联
app.controller('associateController',['$ scope','$ location','$ timeout ','authService','$ controller',函数($ scope,$ location,$ timeout,authService,$ controller){
$ scope.savedSuccessfully = false ;
$ scope.message =;
$ scope.registerData = {
email:authService .externalAuthData.email,
userName:authService.externalAuthData.userName,
provid呃:authService.externalAuthData.provider,
externalAccessToken:authService.externalAuthData.externalAccessToken
};
$ scope.registerExternal = function(){
//$scope.registerData.email = authService.externalAuthData.userName;
authService.registerExternal($ scope.registerData).then (功能(响应){
$ scope.savedSuccessfully = true;
alert(facebook成功通过身份验证);
// $ scope.message =用户已成功注册,您将在2秒内被裁减到订单页面。;
// startTimer();
$ scope.authentication = authService.authentication;
$ location.path('/ index');
},
函数(响应){
var errors = [];
for(var在key.ModelState){
errors.push(response.ModelState [key]);
}
$ scope.message =由于以下原因无法注册用户:+电子邮件'+ $ scope.registerData.email +已被占用。;
});
};
var startTimer = function(){
var timer = $ timeout(function(){
$ timeout.cancel(timer);
$ location.path('/ index');
},2000);
}
}]);
i am using Facebook authentication of webapi 2 mvc anguler.js, Mvc fb login successfully. ut when i logout from facebook it working well.but when tried to login another fb a/c cache remain in bower and get detail from cache or login with previous
details.
here is my logout code
Controller
$scope.logOut = function () {
authService.logOut();
var logoutWindow;
var fbToken = localStorageService.get('fbToken');
if (fbToken) {
var fblogoutUrl = 'https://www.facebook.com/logout.php?access_token=' + fbToken + '&next=http://google.com';
logoutWindow = $window.open(fblogoutUrl, '_blank', 'location=no,toolbar=no');
$timeout(function () {
logoutWindow.close();
localStorageService.remove('fbToken');
}, 1000);
}
$route.reload();
$cacheFactory.get('$http').removeAll();
$scope.authentication = authService.authentication;
$scope.loginData.email = "";
$scope.loginData.pasword = "";
$location.path('/index');
Service
var _logOut = function () {
return $http.post(serviceBase + 'api/Account/Logout').then(function (response) {
localStorageService.remove('authorizationData');
_authentication.isAuth = false;
_authentication.userName = "";
_authentication.role = "";
_authentication.fullName = "";
_authentication.useRefreshTokens = false;
});
};
server side code
[Route("Logout")]
public IHttpActionResult Logout()
{
Authentication.SignOut(CookieAuthenticationDefaults.AuthenticationType);
return Ok();
}
What I have tried:
// Login controller
$scope.authExternalProvider = function (provider) {
var redirectUri = location.protocol + '//' + location.host + '/app/views/authComplete.html';
var externalProviderUrl = ngAuthSettings.apiServiceBaseUri + "api/Account/ExternalLogin?provider=" + provider
+ "&response_type=token&client_id=" + ngAuthSettings.clientId
+ "&redirect_uri=" + redirectUri;
$window.$windowScope = $scope;
var oauthWindow = $window.open(externalProviderUrl, "Authenticate Account", "location=0,status=0,width=600,height=750");
};
$scope.authCompletedCB = function (fragment) {
console.log(fragment);
if (fragment && fragment.external_access_token)
localStorageService.set('fbToken', fragment.external_access_token);
$scope.$apply(function () {
var externalData = { provider: fragment.provider, externalAccessToken: fragment.external_access_token };
authService.obtainAccessToken(externalData).then(function (response) {
$scope.authentication = authService.authentication;
$location.path('/index');
},
function (err) {
$scope.message = err.Message;
if (fragment.haslocalaccount == 'False') {
authService.logOut();
authService.externalAuthData = {
provider: fragment.provider,
userName: fragment.external_user_name,
externalAccessToken: fragment.external_access_token,
email: fragment.external_email
};
if (authService.externalAuthData.email == undefined || authService.externalAuthData.email == "" || authService.externalAuthData.email == null) {
$location.path('/associate');
} else {
$controller('associateController', { $scope: $scope })
$scope.registerExternal();
}
}
});
});
}
//associate
app.controller('associateController', ['$scope', '$location', '$timeout', 'authService', '$controller', function ($scope, $location, $timeout, authService, $controller) {
$scope.savedSuccessfully = false;
$scope.message = "";
$scope.registerData = {
email: authService.externalAuthData.email,
userName: authService.externalAuthData.userName,
provider: authService.externalAuthData.provider,
externalAccessToken: authService.externalAuthData.externalAccessToken
};
$scope.registerExternal = function () {
//$scope.registerData.email = authService.externalAuthData.userName;
authService.registerExternal($scope.registerData).then(function (response) {
$scope.savedSuccessfully = true;
alert("Successfully authenticated by facebook");
// $scope.message = "User has been registered successfully, you will be redicted to orders page in 2 seconds.";
// startTimer();
$scope.authentication = authService.authentication;
$location.path('/index');
},
function (response) {
var errors = [];
for (var key in response.ModelState) {
errors.push(response.ModelState[key]);
}
$scope.message = "Failed to register user due to:" + " Email '" + $scope.registerData.email + "' is already taken.";
});
};
var startTimer = function () {
var timer = $timeout(function () {
$timeout.cancel(timer);
$location.path('/index');
}, 2000);
}
}]);
推荐答案
scope.logOut = function(){
auth Service.logOut();
var logoutWindow;
var fbToken = localStorageService.get('fbToken');
if(fbToken){
var fblogoutUrl ='https://www.facebook.com/logout.php?access_token='+ fbToken +'& next = http://google.com';
logoutWindow =
scope.logOut = function () {
authService.logOut();
var logoutWindow;
var fbToken = localStorageService.get('fbToken');
if (fbToken) {
var fblogoutUrl = 'https://www.facebook.com/logout.php?access_token=' + fbToken + '&next=http://google.com';
logoutWindow =
window.open(fblogoutUrl,'_ blank','location = no,toolbar = no');
window.open(fblogoutUrl, '_blank', 'location=no,toolbar=no');
timeout(function(){
logoutWindow.close();
localStorageService.remove('fbToken');
},1000);
}
timeout(function () {
logoutWindow.close();
localStorageService.remove('fbToken');
}, 1000);
}
这篇关于Facebook注销不清楚缓存的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!