Для аутентификации пользователей необходимо зарегистрировать провайдера идентификации, который будет использоваться для вашего приложения, после чего зарегистрировать в мобильном сервисе.
Войдите на портале управления, перейдите на MobileServices и выберите ваш мобильный сервис (рисунок 1).
Рис. 1. Портал управления Windows Azure
Перейдите на вкладку Dashboard и запишите значение Site URL (рисунок 2).
Рис. 2. Портал управления Windows Azure
Настроим аутентификацию через Facebook. Для этого понадобится аккаунт Facebook.
Перейдите на страницу Facebook Developers и войдите в систему.
Нажмите Apps, затем Create New App (рисунок 3).
Рис. 3. Портал Facebook
Выберите уникальное имя для приложения и нажмите OK(рисунок 4), что зарегистрирует приложение на Facebook.
Рис. 4. Портал Facebook
В Select how your app integrates with Facebook разверните Website with Facebook Login,введите URL мобильного сервиса в поле Site URL и нажмите Save Changes (рисунок 5).
Рис. 5. Портал Facebook
Запишите значения App ID и App Secret (рисунок 6).
Рис. 6. Портал Facebook
Аутентификация на портале настроена.
Перейдите на портал управления Windows Azure и во вкладке Identity введите записанные значения App ID и App Secret, после чего нажмите Save(рисунок 7).
Рис. 7. Портал управления Windows Azure
На портале управления во вкладке Data выберите таблицу TodoItem(рисунок 8).
Рис. 8. Портал управления Windows Azure
На вкладке Permissions определите все права в Only authenticated users и нажмите Save(рисунок 9).
Рис. 9. Портал управления Windows Azure
Откройте проект из предыдущей части и запустите его. Убедитесь, что при запуске приложения выдается ошибка 401 (Unauthorized). Это происходит из-за того, что теперь таблица TodoItem доступна только аутентифицировавшимся пользователям.
Добавьте в файл mainpage.xaml.cs:
using Windows.UI.Popups;
Добавьте в класс MainPage:
private MobileServiceUser user;
private async System.Threading.Tasks.Task Authenticate()
{
while (user == null)
string message;
try
user = await App.MobileService
.LoginAsync(MobileServiceAuthenticationProvider.Facebook);
message =
string.Format("You are now logged in - {0}", user.UserId);
}
catch (InvalidOperationException)
message = "You must log in. Login Required";
var dialog = new MessageDialog(message);
dialog.Commands.Add(new UICommand("OK"));
await dialog.ShowAsync();
В этом коде создается переменная для хранения текущего пользователя и метод для обработки процесса аутентификации.
Замените содержимое метода OnNavigatedTo:
protected override async void OnNavigatedTo(NavigationEventArgs e)
await Authenticate();
RefreshTodoItems();
Запустите приложение и аутентифицируйтесь в выбранном провайдере идентификации.
Существует возможность использовать серверные скрипты для авторизации аутентифицировавшихся пользователей и выдачи им прав на доступ к данным в Windows Azure Mobile Services.
Перейдите на портал управления Windows Azure и на вкладке MobileServices выберите ваше приложение (рисунок 10) .
Рис. 10. Портал управления Windows Azure
На вкладке Data выберите таблицу TodoItem (рисунок 11).
Рис. 11. Портал управления Windows Azure
Нажмите Script и выберите Insert (рисунок 12).
Рис. 12. Портал управления Windows Azure
Замените код и нажмите Save.
function insert(item, user, request) {
item.userId = user.userId;
request.execute();
Скрипт добавляет в сущность значение userId, которая является идентификатором аутентифицировшегося пользователя, перед тем, как она вставляется в таблицу.
Замените код операции Read:
function read(query, user, request) {
query.where({ userId: user.userId });
Откройте проект, созданный ранее, и запустите его, после чего войдите в систему, используя ваши учетные данные. Обратите внимание на изменения в интерфейсе.
Alexander Belotserkovskiy edited Original. Comment: added links