Авторизация с помощью ВК (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, время: 04:49. |