2

Windows Phone 응용 프로그램에서 Windows Azure Mobile 서비스로 인증을 구현하려고합니다. 나는 공식 자습서를 따라 왔고 인증은 잘 작동한다. 문제는 응용 프로그램이 닫히고 다시 시작될 때마다 사용자가 사용자 이름과 암호를 입력해야한다는 것입니다. 서비스는 인증 토큰 만 사용하기 때문에 로그인 페이지의 '내 계정 정보 기억'옵션이 작동하지 않을 수 있습니다.영구 인증 기능이있는 Azure 모바일 서비스

Windows Azure의 공식 설명서는 Live SDK를 사용하여 Microsoft 계정으로 Single Sign On을 할 수 있음을 보여줍니다. Live SDK는 string 형태의 인증 토큰을 제공합니다. 그러나이 토큰도 약 24 시간 후에 만료됩니다. 또한 Microsoft 계정으로 만 제한됩니다.

사용자의 ID를 캐싱하고 자동 로그인을 사용하려면 어떤 방법을 사용할 수 있습니까? 나는 이미 문서 here을 읽었습니다. 토큰이 만료되면 사용자는 다시 로그인해야합니다. 사용자가 한 번만 로그인해야하는 앱을 보았습니다!

답변

2

Live SDK를 사용하는 경우 사용자는 한 번만 로그인하면됩니다. 매번 Live SDK에 전화를 걸지 만 SDK 자체가 토큰 캐싱을 관리하고 필요할 때 서버에 요청합니다 (사용자 개입없이 대다수의 경우) - 예제 코드를 참조하십시오 이하. 당신이 에뮬레이터에서 응용 프로그램을 실행하는 경우, 그것은 로그인 정보가 에뮬레이터를 닫을 경우 손실 될 가능성이 있다고

var liveIdClient = new LiveAuthClient(clientId); 
var liveLoginResult = await liveIdClient.LoginAsync("wl.basic wl.signin".Split()); 
if (liveLoginResult.Status == LiveConnectSessionStatus.Connected) { 
    var token = new JObject(); 
    token.Add("authenticationToken", liveLoginResult.Session.AuthenticationToken); 
    var user = await MobileService.LoginAsync(MobileServiceAuthenticationProvider.MicrosoftAccount, token); 
} 

고지 (내가 과거에 본 적이). 그러나 실제 장치에서 실행하거나 긴 시간 동안 에뮬레이터를 열어 둔 상태로두면 단 한 번만 로그인하면됩니다.

+0

'wl.offline_access'의 범위를 벗어나면 장기 토큰과 새로 고침 토큰이 부여되지 않습니다. 'wl.signin'은 지속적인 로그인을 가능하게하지만 (사용자는 자격증 명을 입력 할 필요가 없습니다), 매번 권한 화면이 계속 표시됩니다. 또한,'LoginAsync' 메소드는 실제로 서버로 가서 토큰을 얻습니다 (소요 시간을 관찰하십시오!). 동쪽에서 Live SDK를 사용할 때 발견 된 해결책은'LiveAuthClient.InitializeAsync'를 호출하고 획득 한 토큰을 사용하는 것이 었습니다. 그래도 다른 공급 업체와 함께 일하는 방법을 알려줄 수 있습니다. – akshay2000

+1

다른 공급자의 경우 전화에서 : LoginAsync'를 호출 할 수 있어야합니다. 공급자가 사용자의 신임을 다시 입력하지 않고 로그인하는 데 사용되는 쿠키를 저장하므로 사용자를 "기억"합니다 (다시 말하면, 에뮬레이터에서 가끔 삭제됩니다). 사용자는 로그인 페이지가 잠깐 보일 수도 있지만 신속하게 해제해야합니다. Windows Phone 용 Facebook SDK (Beta에서 마지막으로 확인한 경우)를 사용하고 액세스 토큰을 Azure 모바일 서비스에 전달하여 로그인 할 수도 있습니다. – carlosfigueira

관련 문제