così sono riuscito a collegare l'applicazione Windows Phone 8 all'API Live, sono anche riuscito a leggere i dati dal mio account hotmail.API SDK per Windows Phone Live - ottieni un nuovo oggetto sessione dopo aver riavviato l'app
Ho accesso all'ID client necessario e al token di accesso in tempo reale.
Ma quando si chiude e si riavvia la mia applicazione, perdo tutti i riferimenti alla sessione e agli oggetti client e devo avviare di nuovo il processo.
Non voglio annoiare l'utente con la maschera Web in cui deve essere d'accordo di nuovo che mi fornisce le autorizzazioni necessarie ogni volta che avvia l'applicazione. Ma non ho trovato un modo per ottenere un riferimento a un oggetto di sessione senza questo passo.
La maschera di accesso viene visualizzata solo la prima volta dopo aver installato l'applicazione, dopo di che viene visualizzata solo la schermata menzionata sopra. Ma è ancora abbastanza fastidioso per l'utente accettarlo ogni volta.
Ho già provato a serializzare l'oggetto sessione, cosa non possibile, perché la classe non ha un costruttore standard.
Forse è possibile creare una nuova sessione utilizzando il token di accesso in diretta, ma non ho trovato un modo per farlo.
Qualche idea? Cosa sto facendo male, so che c'è un modo per accedere nuovamente senza chiedere all'utente. Sono grato per ogni idea.
Alcuni codice che utilizzo:
/// <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());
}
}
Ho provato ad utilizzare il LiveAuthClient.InitializeAsync - metodo per effettuare il login in background dopo il riavvio dell'applicazione, ma l'oggetto di sessione rimane vuoto:
// 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
}
Qualcuno ha un'idea di come potrei accedere a una nuova sessione dopo aver riavviato l'applicazione?
+1 per quello, stavo avendo lo stesso problema, grazie !! –