ios - 使用自定义按钮登录 Facebook

标签 ios objective-c facebook

我已成功使用 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/

相关文章:

ios - JWPlayer 中的总时间和耗时 - Objective-C

ios - ios上的tensorflow,搭建没问题,但是运行的时候报错,无法创建Session,Xcode-log如下

iphone - 在简单计算器中记录输入数字的历史记录

ios - 链接器命令失败 Facebook Sdk

facebook - OAuthException : An active access token must be used to query information about the current user 错误

iphone - 如何知道 iOS 设备是通过 USB 还是 Wall Port Charger 连接的?

ios - 来自 iTunes 的版本信息不正确(以编程方式 Objective-c)

ios - Thread 1 :EXC_BAD_ACCESS(code=1, address=0x20004018) 如何解决?

objective-c - 跳到 AVQueuePlayer 上的上一个 AVPlayerItem/播放队列中的选定项目

swift - 将图像从 collectionView 共享到 Facebook - 可选值崩溃