Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Parse with Facebook Login: Server refused renewal request with error code: 190

I am working on an iOS App that uses Parse and Facebook.

For the Facebook login, I am following the guides on this page: https://www.parse.com/tutorials/integrating-facebook-in-ios

Following the guide, I have this code that validate the cached session:

// 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];
        }
    }];
}

As shown above, if the cached session is invalid, it should call logout:

- (void) logout
{
    [PFUser logOut];
    // Over here we will show the login button again.
}

In order to test this. I first logged into my app using a Facebook account. Then, I changed the password and revisit the app.

The app correctly recognises the session is invalidated and logout is called.

But when I click login again, the login function is returning this error:

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;
        };
    };
}}

WHY? Even if I terminate the app and restart it. The app will now stuck in this state - unable to login. Any help will be appreciated.

p/s: To be clear, this is my login function:

// 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, upon more investigation, so it stuck in this state until I go to the Settings->Facebook to reenter the new password. Is this the correct behaviour? shouldn't iOS6 promptly remind the user to change password when I changed the Facebook password from Facebook.com?

like image 760
mkto Avatar asked Jun 27 '13 16:06

mkto


People also ask

What does error 190 mean on Facebook?

In general, Error code 190 means access token has expired/has been revoked/is otherwise invalid. But there might be specific scenarios that have caused it. Error Subcodes help you narrow down the specific case that has caused the Facebook integration to fail.

How do I fix Error 190 on Facebook?

In most cases, Facebook Error Code 190 file problems are due to the Facebook-related file missing or being corrupted by malware or virus. Ordinarily, installing a new version of the Facebook Inc. file will repair the problem creating the error.


1 Answers

Your error sub code points to this

static const int FBSDKSystemPasswordErrorSubcode = 65001;

case FBSDKSystemPasswordErrorSubcode:
            case FBAuthSubcodePasswordChanged:
                if (subcode == FBSDKSystemPasswordErrorSubcode
                    || [FBErrorUtility fberrorIsErrorFromSystemSession:error]) {
                    userMessageKey = @"FBE:PasswordChangedDevice";
                    userMessageDefault = @"Your Facebook password has changed. To confirm your password, open Settings > Facebook and tap your name.";
                    shouldNotifyUser = YES;
                } else {
                    userMessageKey = @"FBE:PasswordChanged";
                    userMessageDefault = @"Your Facebook password has changed. Please log into this app again to reconnect your Facebook account.";
                }
                break;

You will have to message the user somehow to do this

Your Facebook password has changed. To confirm your password, open Settings > Facebook and tap your name.

or

Your Facebook password has changed. Please log into this app again to reconnect your Facebook account.

like image 73
kushan85 Avatar answered Oct 24 '22 10:10

kushan85