, więc udało mi się połączyć moją aplikację Windows Phone 8 z Live API, udało mi się również odczytać dane z mojego konta hotmail.Windows Phone Live SDK API - pobierz nowy obiekt sesji po ponownym uruchomieniu aplikacji
Mam dostęp do potrzebnego identyfikatora klienta i tokenu dostępu na żywo.
Ale po zamknięciu i ponownym uruchomieniu aplikacji tracę wszystkie odwołania do sesji i obiektów klienckich i muszę rozpocząć proces od nowa.
Nie chcę denerwować użytkownika za pomocą maski internetowej, w której musi ponownie się zgodzić, że zapewnia mi wymagane uprawnienia za każdym razem, gdy uruchamia aplikację. Ale nie znalazłem również sposobu na uzyskanie odniesienia do obiektu sesji bez tego kroku.
Maska logowania jest wyświetlana tylko po raz pierwszy po zainstalowaniu aplikacji, a następnie wyświetlany jest tylko powyższy ekran. Ale nadal jest dość denerwujące, aby użytkownik zaakceptował to za każdym razem.
Próbowałem już serializacji obiektu sesji, co nie jest możliwe, ponieważ klasa nie ma standardowego konstruktora.
Może uda się utworzyć nową sesję za pomocą tokenu dostępu na żywo, ale nie znalazłem sposobu, aby to zrobić.
Wszelkie pomysły? Co robię źle, wiem, że jest sposób na ponowne zalogowanie bez pytania użytkownika. Jestem wdzięczny za każdy pomysł.
Niektóre kod używam:
/// <summary>
/// This method is responsible for authenticating an user asyncronesly to Windows Live.
/// </summary>
public void InitAuth()
{
this.authClient.LoginCompleted +=
new EventHandler<LoginCompletedEventArgs>(this.AuthClientLoginCompleted);
this.authClient.LoginAsync(someScopes);
}
/// <summary>
/// This method is called when the Login process has been completed (successfully or with error).
/// </summary>
private void AuthClientLoginCompleted(object sender, LoginCompletedEventArgs e)
{
if (e.Status == LiveConnectSessionStatus.Connected)
{
LiveConnector.ConnectSession = e.Session; // where do I save this session for reuse?
this.connectClient = new LiveConnectClient(LiveConnector.ConnectSession);
// can I use this access token to create a new session later?
LiveConnector.LiveAccessToken = LiveConnector.ConnectSession.AccessToken;
Debug.WriteLine("Logged in.");
}
else if (e.Error != null)
{
Debug.WriteLine("Error signing in: " + e.Error.ToString());
}
}
Próbowałem użyć LiveAuthClient.InitializeAsync - metoda, aby zalogować się w tle po ponownym uruchomieniu aplikacji, ale obiekt sesja pozostaje pusta:
// this is called after application is restarted
private void ReLogin()
{
LiveAuthClient client = new LiveAuthClient(LiveConnector.ClientID);
client.InitializeCompleted += OnInitializeCompleted;
client.InitializeAsync(someScopes);
}
private void OnInitializeCompleted(object sender, LoginCompletedEventArgs e)
{
Debug.WriteLine("***************** Inititalisation completed **********");
Debug.WriteLine(e.Status); // is undefined
Debug.WriteLine(e.Session); // is empty
}
Czy ktoś ma pomysł, jak uzyskać dostęp do nowej sesji po ponownym uruchomieniu aplikacji?
+1 za to, miałem ten sam problem, dzięki! –