Ошибка аутентификации Facebook - операция не может быть завершена - PullRequest
0 голосов
/ 21 февраля 2012

В моей игре есть возможность для пользователей публиковать достижения на своей стене.Если они вошли в систему, то есть их токен все еще активен, он работает нормально.Однако, если им нужно обновить токен, приложение закрывается, и страница аутентификации Facebook загружается на секунду, прежде чем вернуться в приложение (им нужно только нажать кнопку ОК на странице аутентификации, если они активно вышли из системы, в противном случае это происходит автоматически).,

Проблема в том, что если это произойдет, когда игра вернется, запрос не будет выполнен.Но так как они теперь вошли в систему, если бы они нажали кнопку «Отправить на стенку» второй раз, это работает нормально.Сообщение об ошибке, полученное по неудавшемуся запросу:

    DIDLOGIN
2012-02-21 12:01:33.502[18153:15803] Response received
2012-02-21 12:01:33.502[18153:15803] Request did load raw response
2012-02-21 12:01:33.502[18153:15803] Request failed, error: Error Domain=facebookErrDomain Code=10000 "The operation couldn’t be completed. (facebookErrDomain error 10000.)" UserInfo=0x9992010 {error=<CFBasicHash 0x99785e0 [0x2093b38]>{type = mutable dict, count = 3,
entries =>
    2 : <CFString 0x9963370 [0x2093b38]>{contents = "type"} = <CFString 0x99952a0 [0x2093b38]>{contents = "OAuthException"}
    3 : <CFString 0x99631e0 [0x2093b38]>{contents = "message"} = <CFString 0x997e5b0 [0x2093b38]>{contents = "An active access token must be used to query information about the current user."}
    6 : <CFString 0x998c370 [0x2093b38]>{contents = "code"} = 2500
}
}

Я не уверен, почему я получаю OAuthException, когда я только что успешно его авторизовал?

Спасибо за любую помощь!

Ответы [ 2 ]

1 голос
/ 21 февраля 2012

когда вы устанавливаете словарь параметров, который вы отправляете на Facebook .. также передайте токен доступа, вот так

    NSMutableDictionary* params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                               @"someText",  
                               @"message",
                               [fb accessToken], 
                               @"access_token",nil];
0 голосов
/ 29 февраля 2012

Ну, я нашел проблему. По крайней мере, я думаю, что нашел это, поскольку теперь это работает, я просто надеюсь, что я не внес еще одну ошибку в процесс. В основном мой код для входа выглядел так:

    - (void)postAchievement:(NSString *)message withPicture:(NSString *)pictureURL {
    //Set post to TRUE so the delegate posts when the method returns and configure the message. 
    DLog(@"Achievement message: %@", message);
    self.postAchievement = TRUE;
    self.achievementMessage = message;
    self.wallPostPicURL = pictureURL;
    [self fbLogin];
[facebook requestWithGraphPath:@"me" andDelegate:self];
}

    // Save the user's credentials and expiration date
- (void)fbDidLogin {
    DLog(@"DIDLOGIN");
    self.isLoggedIn = TRUE;
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    [defaults setObject:[facebook accessToken] forKey:@"FBAccessTokenKey"];
    [defaults setObject:[facebook expirationDate] forKey:@"FBExpirationDateKey"];
    [defaults synchronize];
}

fbDidLogin - это метод делегата, вызываемый, когда пользователь вошел в систему. Проблема была в строке [facebook requestWithGraphPath:@"me" andDelegate:self];. Я переместил его в конец метода fbDidLogin, и теперь он, кажется, работает отлично.

...