티스토리 뷰

 

Windows Azure Mobile Services – Live ID Authentication

 

Push Notification 과 마찬가지로 Live ID 에 대한 인증도 저번주에 업데이트 되었습니다. Windows Store 개발자 계정이 있어야 되며 앞 글(http://redju.tistory.com/231 )에서 작업한 내용으로 응용 프로그램을 Windows Store에 연결을 통해 구성하고 Windows Azure Mobile Services 주소를 설정해야 합니다.

 

설정에 대한 내용은 앞 글(http://redju.tistory.com/231 )에서 응용 프로그램을 Windows Store에 연결을 통해 Live Connect 개발자 센터에서 생성된 정보를 이용하게 됩니다.

 

아래 그림과 같이 Live Connect 개발자 센터의 응용 프로그램으로 이동하여 설정 변경, API 설정을 클릭하면 리다이렉션 도메인에 값을 입력합니다.

그리고 Windows Azure Mobile Services로 이동하여 IDENTITY 메뉴에서 CLIENT ID 값을 입력하고 저장하면 됩니다. Push Notification을 설정했다면 CLIENT SECRET 값은 남아있습니다.

 

그 다음 부터 작업은 기존 업데이트와 동일하며 데이터 테이블에 PERMISSIONS를 설정하고 Client에서 로그인 인증을 진행하면 됩니다.

Mobile Services의 해당 테이블로 이동하여 PERMISSIONS 메뉴를 클릭 후 아래와 같이 권한을 설정합니다.


Windows 8 App을 시작하고 저장이나 새로고침을 해보면 아래와 같은 401 오류가 발생하는 것을 알 수 있습니다. 

Live SDK for Windows가 설치되어 있지 않다면 아래 URL을 통해 다운로드하여 설치합니다.

(http://msdn.microsoft.com/en-us/live/ff621310)

Windows 8 프로젝트의 솔루션 탐색기에서 참조 추가를 통해 Microsoft.Live.dll을 추가합니다.

C:\Program Files (x86)\Microsoft SDKs
\Live\v5.0\Metro XAML\References\CommonConfiguration\Neutral

 

개체 탐색기를 통해 Microsoft.Live.dll을 확인할 수 있습니다.

 

MainPage.xaml.cs 에 아래와 같은 using 구문을 추가합니다.

using Microsoft.Live;

using Windows.UI.Popups;

 

session 이라는 필드와 Authenticate 메서드를 MainPage 클래스에 아래와 같이 선언합니다.

private LiveConnectSession session;

 

 

private async System.Threading.Tasks.Task Authenticate()

{

LiveAuthClient liveIdClient = new LiveAuthClient("<<TODO Redirect URL here>>");

 

while (session == null)

{

if (liveIdClient.CanLogout)

liveIdClient.Logout();

 

 

      LiveLoginResult result = await liveIdClient.LoginAsync(new[] { "wl.basic" });

      if (result.Status == LiveConnectSessionStatus.Connected)

      {

          session = result.Session;

          LiveConnectClient client = new LiveConnectClient(result.Session);

          LiveOperationResult meResult = await client.GetAsync("me");

MobileServiceUser loginResult = await App.MobileService.LoginAsync(session.AuthenticationToken);

 

string title = string.Format("환영 {0} !", meResult.Result["first_name"]);

          var message = string.Format("로그인 ID - {0}", loginResult.UserId);

          var dialog = new MessageDialog(message, title);

                dialog.Commands.Add(new UICommand("OK"));

          await dialog.ShowAsync();

      }

      else

      {

          session = null;

          var dialog = new MessageDialog("로그인 필요");

          dialog.Commands.Add(new UICommand("OK"));

          await dialog.ShowAsync();

 

      }

 }

}

 

 

위 코드에서 <<TODO Redirect URL here>> Mobile Services site url을 입력합니다.

그리고 OnNavigtedTo 이벤트를 아래와 같이 수정합니다.

protected async override void OnNavigatedTo(NavigationEventArgs e)

        {

            await Authenticate();

            RefreshTodoItems();

        }

 

F5를 통해 App을 시작하면 아래와 같은 인증 창이 나타나는 것을 확인 가능합니다.

 

이상으로 저번주 업데이트로 Windows Store 개발자 계정을 통해 Live ID로 구성되는 것을 업데이트 했습니다.

 

 

댓글