Facebook注销不清楚缓存 [英] Facebook logout is not clear cache

查看:90
本文介绍了Facebook注销不清楚缓存的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆