Pracuję nad aplikacją na iOS, która korzysta z narzędzia Parse i Facebook.Parsowanie za pomocą Facebooka Zaloguj się: Serwer odmówił prośby o odnowienie z kodem błędu: 190
do logowania Facebooka, śledzę prowadnice na tej stronie: https://www.parse.com/tutorials/integrating-facebook-in-ios
zgodnie z instrukcjami, mam ten kod zatwierdzić w pamięci podręcznej sesji:
// 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];
}
}];
}
Jak przedstawiono powyżej, jeśli sesja w pamięci podręcznej jest nieprawidłowa, należy wywołać wylogowanie:
- (void) logout
{
[PFUser logOut];
// Over here we will show the login button again.
}
Aby to przetestować. Najpierw zalogowałem się do mojej aplikacji za pomocą konta na Facebooku. Następnie zmieniłem hasło i ponownie odwiedziłem aplikację.
Aplikacja prawidłowo rozpoznaje, że sesja została unieważniona i wylogowano się.
Ale kiedy ponownie kliknij logowanie, funkcja logowania wraca ten błąd:
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;
};
};
}}
DLACZEGO? Nawet jeśli zamknę aplikację i uruchomię ją ponownie. Aplikacja utknie w tym stanie - nie można się zalogować. Każda pomoc zostanie doceniona.
p/s: Żeby było jasne, to jest moja funkcja logowanie:
// 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, po więcej dochodzenia, tak tkwi w tym stanie aż pójdę do Ustawienia-> Facebook ponownie wprowadzić nowe hasło. Czy to jest prawidłowe zachowanie? czy iOS6 nie powinien natychmiast przypominać użytkownikowi o zmianie hasła, kiedy zmieniłem hasło na Facebooku z Facebook.com?
Mam ten sam problem, rozwiązałeś go? Dzięki – Kreutzer
W jakiś sposób aplikacja na Facebooku omija to w kontekście aplikacji. Prosi użytkownika, aby ponownie wprowadził hasło ... możesz podsłuchać połączenie, które nawiązują z Charlesem lub innym pakietem węszącym do ponownego wywołania, jestem bardzo ciekawy ... Alternatywa jest trochę fałszywa, ponieważ wielu użytkowników nie mam pojęcia, co zrobić z tą wiadomością. – Kevin