Авторизация с помощью ВК (OAuth)
Всем привет)
Попробовал сегодня сделать авторизацию через ВК — что-то вроде получилось, тем не менее возникло несколько вопросов:
:write: |
Callback к примеру при авторизации ?
Точно не знаю, но но для open api(эта авторизация насколько я понимаю является надстройкой над oAuth ) можно попробывать просто сделать переадресацию роутера из кэлбека. Вроде как $location позволяет делать переадресацию.
VK.Auth.login(function(response) {
if (!response.session) {
alert('вы не можете войти используя этот акаунт');
return;
}
scope.$apply(function() { $location.path("/route"); });
}, VK.access.FRIENDS | VK.access.WIKI);
Это на вскидку. Узнаешь точнее отпишись :) Вообще тебе надо создать в ангуляре сервис ответственный за авторизацию. Про htpps я ХЗ. Гугли, может и не в нем дело. |
Я любопытства ради попробывал сделать авторизацию в VK.
Идея в том что хитрый метод access (в котором был кэлбек логикой доступной только авторизованных) вызывал кэлбек если пользователь уже авторизован, либо вызывал окно авторизации и вызывал кэлбек после авторизации. Собственно это идея сквозного функционала, теперь в любой директиве или контролере можно делать защищенные участки кода которые выполнятся только для авторизованных пользователей.
<!DOCTYPE HTML>
<html ng-app="project">
<head>
<script src="//vk.com/js/api/openapi.js"></script>
<script src="http://code.angularjs.org/angular-1.0.1.js"></script>
</head>
<body >
<script>
var projectModule = angular.module('project',[]);
projectModule.factory('user', function() {
var vk = {
data: {},
appID: 3896712, // как веб сайт
appPermissions: 16,
//инициализация
init: function(){
VK.init({apiId: vk.appID});
},
//метод входа
login:function(callback){
function authInfo(response){
if(response.session){ // Авторизация успешна
vk.data.user = response.session.user;
callback(vk.data.user);
}else {
alert("Авторизоваться не удалось!");
}
}
VK.Auth.login(authInfo, vk.appPermissions);
},
//метод проверки доступа
access:function(callback){
VK.Auth.getLoginStatus(function(response) {
if(response.session){ // Пользователь авторизован
callback(vk.data.user);
}else { // Пользователь не авторизован
vk.login(callback);
}
})
},
logout:function(){
VK.Auth.logout();
this.data.user={};
alert('вы вышли');
}
}
vk.init();
return vk;
});
function FirstCtrl($scope, user) {
$scope.logout=function(){
user.logout();
}
user.access(function(usr){
alert('Этот код исполнится только для авторизованных');
console.log(usr);
});
}
</script>
<div ng-controller="FirstCtrl">
<button ng-click="logout()">Разлогинится</button>
</div>
</body>
</html>
|
| Часовой пояс GMT +3, время: 08:51. |