ho un paio di domande sul nuovo reauthorisation FBSession (reauthorizeWithPermissions: comportamento: completionHandler :) In Facebook SDK 3.0:Facebook iOS SDK 3.0 Re-Autorizzazione
Una volta che qualcuno si è connesso in via facebook sulla mia app, su alcune pagine mi piacerebbe ri-autenticare l'utente con le sue credenziali di Facebook. Questo per garantire che la persona che sta visualizzando la pagina e la persona che ha effettuato la registrazione siano uguali. Le autorizzazioni per re-auth rimangono le stesse di login. Tutto ciò di cui ho bisogno è una riconferma della password dell'utente per garantire questo caso.
Quindi sto usando reauthorisationWithPermissions: per fare ciò. E sto impostando il comportamento come FBSessionLoginBehaviorForcingWebView per garantire che l'utente sia costretto a inserire le sue credenziali. Tuttavia, questo non funziona affatto. Si apre semplicemente una webview vuota per un paio di secondi e poi scompare ... A questo punto, chiama il blocco FBSesstionStateHandler con lo stato impostato su FBSessionStateOpen, tuttavia, non riesce a chiamare FBSessionReauthorizeResultHandler definito all'interno di (completionHandler :).
Tuttavia, se si imposta semplicemente il comportamento su predefinito (FBSessionLoginBehaviorWithFallbackToWebView), funziona correttamente passando la richiesta avanti e indietro tra l'app di facebook/safari e completa la chiamata chiamando correttamente il completamentoHandler. Tuttavia, con il comportamento predefinito, non obbliga l'utente a reinserire la propria password.
Quindi sono davvero confuso, e i documenti sdk sul web non sono molto utili per il mio caso. Qualcuno potrebbe consigliarmi su cosa sto facendo male ... o superare un bug noto nell'SDK? In tal caso, come posso soddisfare le mie esigenze?
-(void) reauthThroughFacebook {
if (!self.facebookSession.isOpen && self.facebookSession.state == FBSessionStateCreatedTokenLoaded) {
[self.facebookSession openWithBehavior: FBSessionLoginBehaviorWithNoFallbackToWebView
completionHandler: self.stateHandler];
}
if (self.facebookSession.isOpen) {
[self.facebookSession reauthorizeWithPermissions: self.userPermissions
behavior: FBSessionLoginBehaviorForcingWebView
completionHandler:^(FBSession *session, NSError* error){
if (self.facebookSession == session) {
[self completedReauthWithSuccess:(error == nil) error:error];
}
}];
} else {
[self completedReauthWithSuccess:NO error:[NSError errorWithDomain: @"No active session found."
code: FBErrorInvalid userInfo: nil]];
}
}
Inoltre, una volta che la visualizzazione Web reauth si apre correttamente, come faccio a garantire che l'indirizzo di posta elettronica dell'utente viene automaticamente popolato e bloccare il modulo utente cambiarlo? Posso accedere alla vista Web all'interno del sdk di Facebook per impostare queste proprietà?
Infine, cosa succede al token di accesso e alla data di scadenza se la re-auth avviene con le stesse autorizzazioni di login ??
Grazie in anticipo,
Mi sto chiedendo la stessa cosa; sembra che in sdk 3.1 sia deprecato anche il metodo reauthorizeWithPermissions: behavior: completionHandler: sono – Kevlar