我会使用 facebook 成功登录,但我有问题,因为当我运行应用程序时,每次打开 facebook 登录屏幕,但如果用户可以注销而不是打开登录屏幕,我想要主屏幕。那么如何管理 session 。
这是我的代码
- (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");
}
}
最佳答案
首先您需要检查登录屏幕中是否有 AccessToken
ViewDidLoad
方法:
- (void)viewDidLoad {
[super viewDidLoad];
if ([FBSDKAccessToken currentAccessToken]) {
[self getFacebookData];
}
else
{
// here use login code bcz you dont have accessToken
}
}
在这里您可以获取用户信息并根据您的需要保存并推送到下一个屏幕:
- (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 - 如何在 ios 中管理 facebook 集成中的 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37963818/