我已成功使用 facebook SDK 登录并获取个人资料图片和姓名。但它在同一个 View 中。我想知道登录后如何更改为另一个 View 。
AppDelegate.m 文件
- (void)applicationDidBecomeActive:(UIApplication *)application {
[[FBSession activeSession] handleDidBecomeActive];
}
-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{
return [[FBSession activeSession]handleOpenURL:url];
}
viewController.m 文件
@interface loginViewController () <FBLoginViewDelegate>
@property (weak, nonatomic) IBOutlet FBLoginView *loginView;
@property (weak, nonatomic) IBOutlet FBProfilePictureView *ProfilePic;
@property (weak, nonatomic) IBOutlet UILabel *ProfileName;
- (void)viewDidLoad {
[super viewDidLoad];
self.loginView.delegate = self;
}
#pragma mark FBLoginviewDelegate
-(void)loginViewFetchedUserInfo:(FBLoginView *)loginView user:(id<FBGraphUser>)user{
self.ProfilePic.profileID = user.objectID;
self.ProfileName.text = user.name;
}
-(void)loginViewShowingLoggedOutUser:(FBLoginView *)loginView{
self.ProfilePic.profileID = nil;
self.ProfileName.text = nil;
}
最佳答案
这是自定义按钮方法:
- (void)viewDidLoad {
[super viewDidLoad];
// self.loginView.delegate = self; //hide one
}
- (IBAction)butFacebooklogin:(id)sender
{
NSArray *permissions = @[@"email",@"user_about_me",@"user_status",@"user_location"];
// OPEN Session!
[FBSession openActiveSessionWithReadPermissions:permissions
allowLoginUI:YES
completionHandler:^(FBSession *session,
FBSessionState status,
NSError *error) {
// if login fails for any reason, we alert
if (error) {
//NSLog(@"error %@",error);
// show error to user.
} else if (FB_ISSESSIONOPENWITHSTATE(status)) {
// no error, so we proceed with requesting user details of current facebook session.
//NSLog(@"we are here");
//NSLog(@"----%@",[session accessTokenData].accessToken);
// NSString *tok = [session accessTokenData].accessToken;
// NSLog(@"tok 2");
[[FBRequest requestForMe] startWithCompletionHandler:^(FBRequestConnection *connection, NSDictionary<FBGraphUser> *user, NSError *error) {
if (error) {
NSLog(@"error:%@",error);
}
else
{
/*
NSString *userlocation=[NSString stringWithFormat:@"%@",user.location[@"name"]];
NSArray *items = [userlocation componentsSeparatedByString:@","];
NSString *usercity, *userstate;
if ([items count]>0) {
usercity=[items objectAtIndex:0];
userstate=[items objectAtIndex:1];
userstate = [userstate stringByReplacingOccurrencesOfString:@" " withString:@""];
}
else
{
usercity=@"";
userstate=@"";
}
*/
NSString *email=[user objectForKey:@"email"];
if (email.length>0) {
email=[user objectForKey:@"email"];
}
else
{
email=@"";
}
NSString *userUpdate =[NSString stringWithFormat:@"user_id=%@&fname=%@&lname=%@",email,user.first_name,user.last_name,nil];
NSLog(@" RequestString for get login details: %@",userUpdate);
// here add ur segue or push view method
}
}];
// [self promptUserWithAccountName]; // a custom method - see below:
}
}];
}
关于ios - 使用自定义按钮登录 Facebook,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25602504/