Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过Facebook iOS Parse.com登录用户_Ios_Objective C_Facebook_Parse Platform - Fatal编程技术网

通过Facebook iOS Parse.com登录用户

通过Facebook iOS Parse.com登录用户,ios,objective-c,facebook,parse-platform,Ios,Objective C,Facebook,Parse Platform,我正试图在parse.com应用程序中通过facebook登录用户。我已经准备好了所有的id和appdelegate方法 我在故事板中创建了一个视图,并将其设置为facebook登录按钮,然后将其作为iAction连接到我的.h文件 我的代码: - (IBAction)fblogin:(FBSDKLoginButton *)sender { [PFFacebookUtils logInInBackgroundWithReadPermissions:@[@"public_profile",

我正试图在parse.com应用程序中通过facebook登录用户。我已经准备好了所有的id和appdelegate方法

我在故事板中创建了一个视图,并将其设置为facebook登录按钮,然后将其作为iAction连接到我的.h文件

我的代码:

- (IBAction)fblogin:(FBSDKLoginButton *)sender {
    [PFFacebookUtils logInInBackgroundWithReadPermissions:@[@"public_profile", @"email"] block:^(PFUser *user, NSError *error) {
        if (error) {
                   //     NSLog(@"Uh oh. The user cancelled the Facebook login.");
            UIAlertView *alertVeiw = [[UIAlertView alloc] initWithTitle:@"Sorry" message:[error.userInfo objectForKey:@"error"] delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil];

            [alertVeiw show];

        } else if (!user) {
            UIAlertView *alertVeiw = [[UIAlertView alloc] initWithTitle:@"Sorry" message:@"You cancelled Login, try again!" delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil];

            [alertVeiw show];
        }else {
                 //       NSLog(@"User logged in through Facebook!");
           // [self dismissViewControllerAnimated:YES completion:NULL];

            FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:@{@"fields": @"first_name, last_name, email, public_profile"}];
            [request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error)
             {
                 if (error)
                 {
                     UIAlertView *alertVeiw = [[UIAlertView alloc] initWithTitle:@"Sorry" message:[error.userInfo objectForKey:@"error"] delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil];

                     [alertVeiw show];

                 } else if ([[error userInfo][@"error"][@"type"] isEqualToString: @"OAuthException"]) { // Since the request failed, we can check if it was due to an invalid session
                     //   NSLog(@"The facebook session was invalidated");
                     [PFFacebookUtils unlinkUserInBackground:[PFUser currentUser]];
                 }
                 else {

                     NSDictionary *userData = (NSDictionary *)result;
                     //   [self requestFacebookUser:user];

                     NSString *name = userData[@"name"];
                     NSString *email = userData[@"email"];

                     user.username = name;
                     user.email = email;
                     [user saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error)
                      {
                          if (error)
                          {
                              UIAlertView *alertVeiw = [[UIAlertView alloc] initWithTitle:@"Sorry" message:[error.userInfo objectForKey:@"error"] delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil];

                              [alertVeiw show];

                          }
                          else {
                              // [self dismissViewControllerAnimated:NO completion:nil];
                              //[self.navigationController popToRootViewControllerAnimated:NO];
                              [self performSegueWithIdentifier:@"inbox" sender:self];
                          }
                      }];
                 }
             }];
        }
    }];
}
当我按下“登录facebook”按钮,然后我们登录时,faccebook网页就会打开,然后什么也没发生

请帮助我一步一步正确地实现facebook登录

编辑:

应用程序代表:

[PFFacebookUtils initializeFacebookWithApplicationLaunchOptions:launchOptions];

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {

    return [[FBSDKApplicationDelegate sharedInstance] application:application
                                                          openURL:url
                                                sourceApplication:sourceApplication
                                                       annotation:annotation];
}

applicationWillEnterForeGround:
[FBSDKAppEvents activateApp];
#import <ParseFacebookUtils/PFFacebookUtils.h> //fb login for parse
....
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  ...
  [PFFacebookUtils initializeFacebook]; //fb login for parse 
  return YES;
}

- (void)applicationDidBecomeActive:(UIApplication *)application {
  ....
  [FBAppCall handleDidBecomeActiveWithSession:[PFFacebookUtils session]]; //fb login for parse
}

- (BOOL)application:(UIApplication *)application
        openURL:(NSURL *)url
  sourceApplication:(NSString *)sourceApplication
     annotation:(id)annotation {
  return [FBAppCall handleOpenURL:url
              sourceApplication:sourceApplication
                    withSession:[PFFacebookUtils session]];
}


- (void)applicationWillTerminate:(UIApplication *)application {
  [[PFFacebookUtils session] close];
}
然后:

除了你(Santilee)的回答外,我还有以下方法:

- (void)loginViewFetchedUserInfo:(FBSDKLoginManager *)loginView
                            user:(FBSDKProfile*)user {

}

-(void)loginButton:(FBSDKLoginButton *)loginButton didCompleteWithResult:(FBSDKLoginManagerLoginResult *)result error:(NSError *)error{
  //  [self performSegueWithIdentifier:@"inbox" sender:self];
}

-(void)loginButtonDidLogOut:(FBSDKLoginButton *)loginButton{

}

-(void)loginButtonClicked{
}

我还得到了这个错误,它的视图不在窗口层次结构中

以下是我是如何做到这一点的,它对我很有用。 首先,将其导入m文件:

#import <ParseFacebookUtils/PFFacebookUtils.h>//fb login for parse
下面是我如何配置应用程序内委托:

[PFFacebookUtils initializeFacebookWithApplicationLaunchOptions:launchOptions];

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {

    return [[FBSDKApplicationDelegate sharedInstance] application:application
                                                          openURL:url
                                                sourceApplication:sourceApplication
                                                       annotation:annotation];
}

applicationWillEnterForeGround:
[FBSDKAppEvents activateApp];
#import <ParseFacebookUtils/PFFacebookUtils.h> //fb login for parse
....
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  ...
  [PFFacebookUtils initializeFacebook]; //fb login for parse 
  return YES;
}

- (void)applicationDidBecomeActive:(UIApplication *)application {
  ....
  [FBAppCall handleDidBecomeActiveWithSession:[PFFacebookUtils session]]; //fb login for parse
}

- (BOOL)application:(UIApplication *)application
        openURL:(NSURL *)url
  sourceApplication:(NSString *)sourceApplication
     annotation:(id)annotation {
  return [FBAppCall handleOpenURL:url
              sourceApplication:sourceApplication
                    withSession:[PFFacebookUtils session]];
}


- (void)applicationWillTerminate:(UIApplication *)application {
  [[PFFacebookUtils session] close];
}
#导入//fb登录进行解析
....
-(BOOL)应用程序:(UIApplication*)应用程序使用选项完成启动:(NSDictionary*)启动选项{
...
[PFFacebookUtils initializeFacebook];//用于解析的fb登录
返回YES;
}
-(无效)应用IDBECOMEACTIVE:(UIApplication*)应用{
....
[FBAppCall HandledIDBecMeactiveWithSession:[PFFacebookUtils session];//fb登录以进行分析
}
-(BOOL)应用程序:(UIApplication*)应用程序
openURL:(NSURL*)url
sourceApplication:(NSString*)sourceApplication
注释:(id)注释{
返回[FBAppCall handleOpenURL:url
sourceApplication:sourceApplication
withSession:[PFFacebookUtils会话]];
}
-(无效)申请将终止:(UIApplication*)申请{
[[PFFacebookUtils会话]关闭];
}

谢谢您的回答,但我仍然无法回答,请参阅上面的问题了解我的方法和我在应用程序中的权限。一旦用户登录,我们进入收件箱大约2秒钟,然后它返回登录状态@SANITLEEE也没有在后端创建任何用户。我的意思是,实际上要转到“设置”->“Facebook”->“您的姓名”->,然后删除您的帐户并重试。它是用来帮我的。我也得到了这个错误,它的视图不在窗口层次结构中!