Sto lavorando su un'app iOS che utilizza Parse e Facebook.Parse con Facebook Login: server ha rifiutato la richiesta di rinnovo con codice di errore: 190
Per il login di Facebook, sto seguendo le guide in questa pagina: https://www.parse.com/tutorials/integrating-facebook-in-ios
Seguendo la guida, ho questo codice che convalidare la sessione di cache:
// check if this cached session is still valid?
// does nothing if still valid
- (void) validateCachedSession
{
FBRequest *request = [FBRequest requestForMe];
[request startWithCompletionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
if (!error)
{
// handle successful response
LogObvious(@"Facebook session validated. No problem");
}
else if ([error.userInfo[FBErrorParsedJSONResponseKey][@"body"][@"error"][@"type"] isEqualToString:@"OAuthException"])
{ // Since the request failed, we can check if it was due to an invalid session
LogObvious(@"The facebook session was invalidated. Announce logged Out");
// The persisted session is invalid. Logout!
[self logout];
}
else
{
LogObvious(@"The facebook session was invalidated. Announce logged Out");
// The persisted session is invalid. Logout!
[self logout];
}
}];
}
Come indicato sopra, se il la sessione memorizzata nella cache non è valida, dovrebbe chiamare il logout:
- (void) logout
{
[PFUser logOut];
// Over here we will show the login button again.
}
Per testare questo. Per prima cosa ho effettuato l'accesso alla mia app utilizzando un account Facebook. Quindi, ho cambiato la password e rivisitare l'app.
L'applicazione riconosce correttamente la sessione è invalidata e il logout viene chiamato.
Ma quando clicco di nuovo login, la funzione di login sta tornando questo errore:
Uh oh. An error occurred: Error Domain=com.facebook.sdk Code=5 "The operation couldn’t be completed. (com.facebook.sdk error 5.)" UserInfo=0x1e066140 {com.facebook.sdk:ErrorInnerErrorKey=Error Domain=com.apple.accounts Code=1 "Server refused renewal request with error code: 190" UserInfo=0x1d56df10 {NSLocalizedDescription=Server refused renewal request with error code: 190}, com.facebook.sdk:ParsedJSONResponseKey={
body = {
error = {
code = 190;
"error_subcode" = 65001;
};
};
}}
PERCHE '? Anche se termino l'app e la riavvio. L'app ora si bloccherà in questo stato - impossibile accedere. Qualsiasi aiuto sarà apprezzato.
p/s: Per essere chiari, questo è il mio funzione di login:
// to be called when user explicitly clicked a login button
- (void) loginByFacebookWithPermissions:(NSArray*)permissionsArray
{
LogFunctionCalledObvious();
[PFFacebookUtils logInWithPermissions:permissionsArray block:^(PFUser *user, NSError *error)
{
if (!user)
{
if (!error)
{
NSLog(@"Uh oh. The user cancelled the Facebook login.");
} else
{
NSLog(@"Uh oh. An error occurred: %@", error);
[self logout];
}
} else if (user.isNew)
{
LogObvious(@"User with facebook signed up and logged in!");
[self requestLoggedInUserInfo];
} else
{
LogObvious(@"User with facebook logged in!");
[self requestLoggedInUserInfo];
}
}];
}
p/s2: OK, dopo ulteriori indagini, quindi è bloccato in questo stato fino a quando vado alle Impostazioni-> Facebook per reinserire la nuova password. È questo il comportamento corretto? iOS6 non dovrebbe ricordare tempestivamente all'utente di cambiare la password quando ho cambiato la password di Facebook da Facebook.com?
Ho lo stesso problema, l'hai risolto? Grazie – Kreutzer
In qualche modo l'app di Facebook aggira questo contesto nel contesto dell'app. Chiede all'utente di inserire di nuovo la password ... potresti forse snoopare la chiamata che stanno facendo con Charles o qualche altro pacchetto che annusa per la chiamata di re-auth, sono molto curioso ... L'alternativa è un po 'fasulla come molti utenti hanno non ho idea di cosa fare con quel messaggio. – Kevin