Новый Facebook SDK FBSession sessionOpenWithPermissions
Я пытаюсь разработать приложение iOS с помощью Facebook, и я новичок. Поэтому я пытался сделать
войдите в систему с Facebook, следуйте инструкциям на Facebook и попытайтесь их реализовать.
Но я столкнулся, [FBSession sessionOpenWithPermissions]
не найден. Когда я запускаю
приложение, оно закроет и скажет эту ошибку. При создании проекта он будет показывать предупреждение
желтый восклицательный знак, что sessionOpenWithPermission
не найден в FBSession
Учебник устарел? Если да, то каков новый код для нового SDK для Facebook для
sessionOpenWithPermission?
Ответы
Ответ 1
Попробуйте этот код
account = [[ACAccountStore alloc] init];
accountType = [account accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierTwitter];
arrayOfAccounts = [account accountsWithAccountType:accountType];
appDelegate= (AppDelegate *)[[UIApplication sharedApplication] delegate];
chk=appDelegate.chk_login;
if (!appDelegate.session.isOpen) {
// create a fresh session object
appDelegate.session = [[FBSession alloc] init];
if (appDelegate.session.state == FBSessionStateCreatedTokenLoaded) {
// even though we had a cached token, we need to login to make the session usable
[appDelegate.session openWithCompletionHandler:^(FBSession *session,
FBSessionState status,
NSError *error) {
// we recurse here, in order to update buttons and labels
}];
}
}
Ответ 2
Возможно, этот код поможет вам, поместите его в свой AppDelegate.m
класс
- (void)sessionStateChanged:(FBSession *)session
state:(FBSessionState) state
error:(NSError *)error
{
switch (state) {
case FBSessionStateOpen: {
self.loggedinVCController = [[LoggedinVC alloc] initWithNibName:@"LoggedinVC" bundle:nil];
self.navController = [[UINavigationController alloc]initWithRootViewController:self.loggedinVCController];
self.window.rootViewControlle`enter code here`r = self.navController;
}
break;
case FBSessionStateClosed:
case FBSessionStateClosedLoginFailed:
// Once the user has logged in, we want them to
// be looking at the root view.
[self.navController popToRootViewControllerAnimated:NO];
[FBSession.activeSession closeAndClearTokenInformation];
self.viewController = [[SampleViewController alloc] initWithNibName:@"SampleViewController" bundle:nil];
self.window.rootViewController = self.viewController;
break;
default:
break;
}
if (error) {
UIAlertView *alertView = [[UIAlertView alloc]
initWithTitle:@"Error"
message:error.localizedDescription
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alertView show];
}
}
- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation
{
return [FBSession.activeSession handleOpenURL:url];
}
- (void)openSession
{
[FBSession openActiveSessionWithReadPermissions:nil
allowLoginUI:YES
completionHandler:
^(FBSession *session,
FBSessionState state, NSError *error) {
[self sessionStateChanged:session state:state error:error];
}];
}
Ответ 3
Возможный дубликат Facebook iOS SDK 3.0 Login Tutorial Проблема с FBSession
//REPLACE
[FBSession sessionOpenWithPermissions:nil
completionHandler: ^(FBSession *session, FBSessionState state, NSError *error) {
[self sessionStateChanged:session state:state error:error];
}];
//WITH
[FBSession openActiveSessionWithPermissions:nil
allowLoginUI:YES
completionHandler:^(FBSession *session, FBSessionState state, NSError *error) {
[self sessionStateChanged:session state:state error:error];
}];
Ответ 4
Он открывает просмотр facebook и, возможно, показывает имя пользователя ux
- (BOOL)openSessionWithAllowLoginUI:(BOOL)allowLoginUI {
NSArray *permissions = [[NSArray alloc] initWithObjects:
@"email",
@"user_likes",
nil];
return [FBSession openActiveSessionWithReadPermissions:permissions
allowLoginUI:allowLoginUI
completionHandler:^(FBSession *session,
FBSessionState state,
NSError *error) {
[self sessionStateChanged:session
state:state
error:error];
}];}
Ответ 5
Простое копирование @Stas Zhukovskiy ответьте в комментариях к ответу:
существует несоответствие в учебнике документации и образце. Вы должны использовать - (BOOL) openSessionWithAllowLoginUI: (BOOL) allowLoginUI; вместо. - Стас Жуковский
Ответ 6
вы также можете использовать Sharekit
Его очень легко реализовать, а также поддерживает другие социальные сети.
sharekit
Поделитесь учебником по сборке
Ответ 7
В App Delegate отсутствует некоторый код строки. Просто проверьте, что один. После этого u проверит открытый сеанс и закрытую сессию во время вызова метода для Facebook.