我想讓FB.logout()功能工作。FB.logout問題,FB.getLoginStatus()返回未知狀態
然後我得到的錯誤是FB.logout()調用沒有訪問令牌。 所以我搜索了一些解決方案。所以我發現我們必須得到地位,然後嘗試。所以當我嘗試獲取LoginStatus()時。 authResponse爲空,狀態未知。
所以我不知道是什麼原因,我沒有得到authResponse。
我附上我的代碼。
Controller.js
app.controller("dashboardCtrl",["$scope","authFactory","$location",function($scope,authFactory,$location){
var userObj = authFactory.getUserObj(userObj);
console.log(userObj);
var accessToken = authFactory.getAccessToken();
console.log(accessToken);
$scope.accessToken = accessToken;
$scope.FBout = function(){
FB.getLoginStatus(function(response) {
console.log(response);
if (response.status === 'connected') {
var uid = response.authResponse.userID;
var accessToken = response.authResponse.accessToken;
FB.logout(function(response) {
authFactory.clearCookie();
});
} else if (response.status === 'not_authorized') {
} else {
}
});
};
}]);
factory.js
app.factory("authFactory",["$cookies","$location",function($cookies,$location){
var authFactory = {};
authFactory.setAccessToken = function(accessToken){
$cookies.put("accessToken",accessToken);
}
authFactory.getAccessToken = function(){
return $cookies.get("accessToken");
}
authFactory.getUserObj = function(){
var userObj = $cookies.get('userObj');
if(userObj){
return userObj;
}
else {
console.log("error");
}
}
authFactory.clearCookie = function(){
$cookies.remove("accessToken");
$location.path("/")
}
return authFactory;
}]);
我不能註銷並重定向到一些其它頁面。我卡住了,我有accesstoken,並在cookie中的用戶對象。
我確定我沒有在Chrome設置中選中第三方應用程序訪問。
用另一個我登錄的控制器進行更新,這可能是必需的。
app.controller('homeCtrl',["$scope","authFactory","$location","$cookieStore",function($scope,authFactory,$location,$cookieStore){
$scope.name = "login Please";
$scope.FBLogin = function(){
FB.login(function(response) {
if (response.authResponse) {
console.log('Welcome! Fetching your information.... ');
FB.api('/me', function(response) {
console.log('Good to see you, ' + response.name + '.');
$cookieStore.put("userObj",response);
var accessToken = FB.getAuthResponse().accessToken;
authFactory.setAccessToken(accessToken);
$location.path("/dashboard");
$scope.$apply();
});
} else {
console.log('User cancelled login or did not fully authorize.');
}
});
};
}]);
這是我Route.js
app.config(["$routeProvider",function($routeProvider){
$routeProvider
.when("/",{
templateUrl : 'views/home/login.html',
controller : 'homeCtrl'
})
.when("/dashboard",{
templateUrl : 'views/home/dashboard.html',
controller : 'dashboardCtrl',
authenticated : true
})
.otherwise('/',{
templateUrl : 'views/home/login.html',
controller : 'homeCtrl'
})
}]);
app.run(["$rootScope","$location","authFactory",function($rootScope,$location,authFactory){
$rootScope.$on('$routeChangeStart',function(event,next,current){
if(next.$$route.authenticated){
var userAuth = authFactory.getAccessToken();
if(!userAuth){
$location.path('/');
}
}
});
}]);
新增的路線,控制器在登錄完成 –