Я пытаюсь добавить интеграцию facebook в приложение, используя новую (бета-версию) facebook ios sdk 3.0. Все, что я хотел бы, это опубликовать статус обновления для facebook. Я использовал FBLoginView для входа в facebook. Я положил свой идентификатор приложения в plist, как указано на facebook. Я добавил код для отправки в facebook.
(void)viewDidLoad
{
[super viewDidLoad];
NSArray *perms;
perms = [NSArray arrayWithObjects:@"status_update", nil];
FBLoginView *loginview =
[[FBLoginView alloc] initWithPermissions:perms];
loginview.frame = CGRectOffset(loginview.frame, 5, 5);
loginview.delegate = self;
[self.view addSubview:loginview];
// Do any additional setup after loading the view, typically from a nib.
}
- (IBAction)poststatus:(UIButton *)sender {
NSString *message = [NSString stringWithFormat:@"Test staus update"];
[FBRequestConnection startForPostStatusUpdate:message
completionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
[self showAlert:message result:result error:error];
}];
}
- (void)showAlert:(NSString *)message
result:(id)result
error:(NSError *)error {
NSString *alertMsg;
NSString *alertTitle;
if (error) {
alertMsg = error.localizedDescription;
alertTitle = @"Error";
} else {
NSDictionary *resultDict = (NSDictionary *)result;
alertMsg = [NSString stringWithFormat:@"Successfully posted '%@'.\nPost ID: %@",
message, [resultDict valueForKey:@"id"]];
alertTitle = @"Success";
}
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:alertTitle
message:alertMsg
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alertView show];
}
Странно, этот код работает ONCE. После аутентификации пользователя в первый раз я могу успешно опубликовать ОДИН статус. После этого все последующие попытки потерпят неудачу с ошибкой FBiOSSDK 5 (в консоли Error: HTTP status status: 400). Единственный способ исправить это - удалить приложение из учетной записи facebook и повторно аутентифицировать. Я не уверен, в чем проблема. Я искал онлайн решения, но ничего не мог найти. Если кто знает, как это исправить, сообщите мне. Благодаря