如何在 ios 中的 facebook 集成中管理会话
Posted
技术标签:
【中文标题】如何在 ios 中的 facebook 集成中管理会话【英文标题】:how to manage session in facebook integration in ios 【发布时间】:2016-06-22 09:24:26 【问题描述】:我将使用 facebook 成功登录,但我有问题,因为当我运行应用程序时,每次都打开 facebook 登录屏幕,但如果用户可以注销而不是打开登录屏幕,我想要主屏幕。所以如何管理会话。
这是我的代码
- (IBAction)gb_login:(id)sender
FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
login.loginBehavior = FBSDKLoginBehaviorBrowser;
[login logInWithReadPermissions:@[@"email"] handler:^(FBSDKLoginManagerLoginResult *result, NSError *error)
if (error)
// Process error
else if (result.isCancelled)
// Handle cancellations
else
if ([result.grantedPermissions containsObject:@"email"])
NSLog(@"result is:%@",result);
[self fetchUserInfo];
];
-(void)fetchUserInfo
if ([FBSDKAccessToken currentAccessToken])
NSLog(@"Token is available");
[[[FBSDKGraphRequest alloc] initWithGraphpath:@"me" parameters:@@"fields": @"id, name, link, first_name, last_name, picture.type(large), email"]
startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error)
if (!error)
NSLog(@"Fetched User Information:%@", result);
NSLog(@"imagepath=%@",[[[result objectForKey:@"picture"]objectForKey:@"data"] objectForKey:@"url"]);
NSString *facebook=@"facebook";
[[NSUserDefaults standardUserDefaults] setObject:facebook forKey:@"logintype"];
[[NSUserDefaults standardUserDefaults] setObject:result forKey:@"facebooklogin"];
[[NSUserDefaults standardUserDefaults] synchronize];
else
NSLog(@"Error %@",error);
];
else
[[FBSDKLoginManager new] logOut];
NSLog(@"User is not Logged in");
【问题讨论】:
【参考方案1】:首先你需要检查你是否有AccessToken
在登录屏幕ViewDidLoad
方法:
- (void)viewDidLoad
[super viewDidLoad];
if ([FBSDKAccessToken currentAccessToken])
[self getFacebookData];
else
// here use login code bcz you dont have accessToken
在这里,您可以获取 userInfo 并根据需要保存并推送到下一个屏幕:
- (void)getFacebookData
if ([FBSDKAccessToken currentAccessToken])
[[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:@@"fields": @"id, name, link, first_name, last_name, picture.type(large), email, bio ,location , friends ,hometown , friendlists , gender"]
startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error)
if (!error)
NSLog(@"fetched user:%@", result);
// here you need to code for push a next screen
];
【讨论】:
以上是关于如何在 ios 中的 facebook 集成中管理会话的主要内容,如果未能解决你的问题,请参考以下文章
如何在 iOS6 上将 Facebook 框架集成到应用程序中?
如何在请求会话之前检测用户是不是有 iOS 集成 Facebook 帐户设置?
如果我在 ios 中使用电话号码登录,如何从 Facebook 获取电子邮件 ID?