Я действительно застрял на этом, пожалуйста, помогите!
Я пишу приложение, которое реализует подключение к Facebook, поэтому при запуске приложения мне нужно проверить, есть ли у него действующий токен доступа к Facebook, а также проверить, действителен ли их appKey, который я предоставляю, до сих пор (я не знаю не хочу, чтобы одновременно регистрировалось более 1 аккаунта). так что должно произойти, это ..
Приложение запускается -> получить facebook / мой ключ доступа / токен от NSUserDefaults -> отправить мой appkey на сервер, чтобы убедиться, что оно все еще действует -> если оно действительно, то показать мой tableviewcontroller.
если в другом месте произойдет сбой (токен доступа к Facebook недействителен или их ключ приложения для моего приложения недействителен), то они будут перенаправлены на просмотр с помощью кнопки подключения к Facebook. после того, как они войдут оттуда, им будет показан tableviewcontroller
Я не знаю, как структурировать мой делегат приложения и просматривать контроллеры, чтобы это работало. Из того, что я знаю о подключении к Facebook, большинство вещей должно происходить в делегате, потому что методы приложения Facebook: handleOpenUrl: и fbDidLogin должны вызываться в делегате приложения, но если я делаю
self.window.rootViewController = self.tableController
или
self.window.rootViewController = self.loginButtonViewController
до этого, тогда у меня не будет доступа к этим методам
Нужно ли вставлять делегата или что-то из контроллера представления обратно в делегат приложения? я понятия не имею ..
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
facebook = [[Facebook alloc] initWithAppId:@"MY_APP_ID"];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if ([defaults objectForKey:@"FBAccessTokenKey"]
&& [defaults objectForKey:@"FBExpirationDateKey"]) {
facebook.accessToken = [defaults objectForKey:@"FBAccessTokenKey"];
facebook.expirationDate = [defaults objectForKey:@"FBExpirationDateKey"];
}
NSString *myKey;
if ([defaults stringForKey:@"myKey"]) {
myKey= [[NSString alloc] initWithString:[defaults stringForKey:@"myKey"]];
}
else{
myKey = [[NSString alloc] initWithString:@""];
}
//SEND THE KEY + FBID TO SERVER
if ([facebook isSessionValid] /*&& [response==OK]*/) {
self.window.rootViewController = self.navController;
//delegate data to EventsTableController
}
else{
self.window.rootViewController = self.loginController;
}
[self.window makeKeyAndVisible];
return YES;
}
- (void)fbDidLogin {
NSLog(@"did login");
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:[facebook accessToken] forKey:@"FBAccessTokenKey"];
[defaults setObject:[facebook expirationDate] forKey:@"FBExpirationDateKey"];
[defaults synchronize];
NSString *myKey;
[facebook requestWithGraphPath:@"me" andDelegate:self];
if ([defaults stringForKey:@"myKey"]) {
myKey= [[NSString alloc] initWithString:[defaults stringForKey:@"myKey"]];;
}
else{
myKey= [[NSString alloc] initWithString:@""];
}
//NSString *validKey = [[NSString alloc] initWithString:@"OK"];
//Send myKey and validKey to server
//server will do its thang and send data
[self.window addSubview:self.navController.view];
[self.window makeKeyAndVisible];
}
заранее спасибо