我正在尝试将Facebook集成应用到我的应用中。我使用以下代码登录。 在我登录后,当我注销时,应用程序从头开始全面重新启动,并且每次都需要权限。我只希望它在我第一次登录特定用户时要求获得许可。但它总是询问我何时退出并尝试使用Facebook按钮登录。ios登录并登录后的Facebook集成错误
- (IBAction)facebook:(id)sender
{
FBLoginView *loginView=[[FBLoginView alloc]init];
loginView.delegate=self;
loginView.readPermissions = @[@"first_name",
@"last_name",
@"location",
@"id",
@"access_token",
@"email"];
NSArray* permissions = [NSArray arrayWithObjects: @"email", nil];
loginView.readPermissions = @[@"email"];
loginView.readPermissions=permissions;
[FBSession openActiveSessionWithAllowLoginUI:YES];
[FBRequestConnection
startForMeWithCompletionHandler:^(FBRequestConnection *connection,
id<FBGraphUser> user1,
NSError *error)
{
if (!error)
{
firstname=user1.first_name;
lastname=user1.last_name;
city=[user1.location objectForKey:@"name"];
email=user1[@"email"];
fbid=user1.id;
[email protected]"Y";
[[NSUserDefaults standardUserDefaults]setObject:Loggedin forKey:@"token"];
[[NSUserDefaults standardUserDefaults]synchronize];
}
NSURL *url = [[NSURL alloc]initWithString:[NSString stringWithFormat:@"%@action=currfbuser&email=%@&fb_id=%@",MainURL,email,fbid ]];
NSError *errors;
NSData *data = [NSData dataWithContentsOfURL:url];
NSDictionary *json = (NSDictionary *)[NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&errors];
status = json[@"status"];
user = json[@"user"];
if ([status isEqualToString:@"success"])
{
[self performSegueWithIdentifier: @"LogIN" sender: self];
}
else if (!([fbid isEqualToString:@""]))
{
[self performSegueWithIdentifier: @"Facebooksegue" sender: self];
}
NSLog(@"%@",firstname);
NSLog(@"%@",lastname);
NSLog(@"%@",city);
NSLog(@"%@",email);
NSLog(@"%@",fbid);
}];
}
以下代码我用于注销。
- (IBAction)Logout:(id)sender
{
_DetailsView.hidden=YES;
_fade.hidden=YES;
y=0;
[email protected]"N";
user=nil;
NSHTTPCookieStorage* cookies = [NSHTTPCookieStorage sharedHTTPCookieStorage];
NSArray* facebookCookies = [cookies cookiesForURL:[NSURL URLWithString:@"http://login.facebook.com"]];
for (NSHTTPCookie* cookie in facebookCookies) {
[cookies deleteCookie:cookie];
}
[FBSession.activeSession closeAndClearTokenInformation];
[[NSUserDefaults standardUserDefaults]setObject:Loggedin forKey:@"token"];
[[NSUserDefaults standardUserDefaults]setObject:user forKey:@"user"];
[[NSUserDefaults standardUserDefaults]synchronize];
[self.navigationController popToRootViewControllerAnimated:YES];
}
这是我第一次整合Facebook。所以我对我使用的代码没有多少确定。 用户数据抓取工作正常。问题是,应用程序每次都要求获得许可,如果我按下“确定”或跳过权限,那么当我单击“确定”或“跳过”时,应用程序会重新启动。
我获得的输出已经上传到YouTube。请检查以下链接。
我一直坚持这个,不能前进堂妹这个bug。 请帮助我,并且当赏金可用时,我可以给出50解决方案。
谢谢。
你说的是对的。但是,当我注销活动会话关闭。所以这再次发生。它一次又一次地要求许可。同样,在接受许可或跳过后,应用程序将重新启动,并且启动屏幕会显示为我上传的链接中的视频。 – Spidy
如果你注销,它应该再次询问权限。否则如果userA注销和userB想要登录会发生什么。你的意思是说,用户B应该问用户A知道应用程序将访问什么数据或应用程序应该假设用户B也会给予权限 –
主要问题是应用程序在获取数据后重新启动...这是登录我必须在facebook登录按钮上按两次... – Spidy