我正在使用此代码进行Facebook登录,并且它在6.7版本的facebook应用程序中运行良好。
当facebook应用程序的版本是6.8时,登录不起作用! 有人可以想象发生了什么事吗?
我正在使用的代码是......
ACAccountType *facebookTypeAccount = [self.accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook];
[self.accountStore requestAccessToAccountsWithType:facebookTypeAccount
options:@{ACFacebookAppIdKey:facebookAppNumber, ACFacebookPermissionsKey: @[@"email"]}
completion:^(BOOL granted, NSError *error)
{
if(granted)
{
NSArray *accounts = [self.accountStore accountsWithAccountType:facebookTypeAccount];
//NSLog(@"accounts %@",accounts);
self.facebookAccount = [accounts lastObject];
checkFbStatus = statusWaiting;
[self me];
userFbEmail = [jay valueForKey:INFO_FB_EMAIL];
facebookId = [jay valueForKey:INFO_FB_ID];
}
else
{
NSLog(@"one");
//aqui você
if([error code]== ACErrorAccountNotFound)
{
//[SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook];
SLComposeViewController * fb = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];
fb.view.hidden = YES;
[self presentViewController:fb animated:NO completion:nil];
checkFbStatus = statusFailed;
//Adicione sua conta de facebook nas configurações.
}
else
{
//Erro desconhecido ou então o usuário não deu permissão.
checkFbStatus = statusFailed;
}
}
} ];
答案 0 :(得分:0)
我遇到了同样的问题:
必须制作
@property (strong, nonatomic) FBSession *session;
in AppDelegate
in
(void)applicationDidBecomeActive:(UIApplication *)application { [FBAppEvents activateApp]; [FBAppCall handleDidBecomeActiveWithSession:self.session]; }
in
(void)applicationWillTerminate:(UIApplication *)application { [self.session close]; }
in
(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { return [FBAppCall handleOpenURL:url sourceApplication:sourceApplication withSession:self.session]; }
in your settings class
if (appDelegate.session.isOpen) {
[FBSession setActiveSession:appDelegate.session];
[[FBRequest requestForMe] startWithCompletionHandler:^(FBRequestConnection *connection,
NSDictionary *user, NSError *error) { [self registerationWithFBRequestConnection:connection andFBGraphUser:user andNSError:error]; }];
}
else
{
[appDelegate.session closeAndClearTokenInformation];
NSArray *permissions = [NSArray arrayWithObjects:@"email", nil];
appDelegate.session = [[FBSession alloc] initWithPermissions:permissions];
[FBSession setActiveSession:appDelegate.session];
[appDelegate.session openWithBehavior:(FBSessionLoginBehaviorWithFallbackToWebView)
completionHandler:^(FBSession *session, FBSessionState status, NSError *error) { [self sessionStateChangedWithFBSession:session andFBSessionState:status andNSError:error]; }];
}
(void)sessionStateChangedWithFBSession:(FBSession*)session andFBSessionState:(FBSessionState)status andNSError:(NSError*) error { switch (status) { case FBSessionStateOpen: { [[FBRequest requestForMe] startWithCompletionHandler:^(FBRequestConnection *connection, NSDictionary *user, NSError *error) {
[self registerationWithFBRequestConnection:connection andFBGraphUser:user andNSError:error];
}]; }
break;
case FBSessionStateClosed:
break;
case FBSessionStateClosedLoginFailed:
break;
default:
break;
} }
在您的registerationWithFBRequestConnection
:方法中,您可以获取所有登录信息。