iOS:使用Facebook登录并打开Native Facebook应用程序

Vip*_*ini 2 facebook ios

  • 我希望在登录时打开facebook应用程序,该应用程序已安装在设备中进行登录验证,但始终在Safari浏览器中打开.

- 点击Facebook按钮

    -(void)loginButtonClicked
        {
            FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];

        //    [login setLoginBehavior:FBSDKLoginBehaviorNative];

                [login logInWithReadPermissions:@[@"email"] fromViewController:self handler:^(FBSDKLoginManagerLoginResult *result, NSError *error)
                 {
                     if (error)
                     {
                         NSLog(@"Login process error");
                     }
                     else if (result.isCancelled)
                     {
                         NSLog(@"User cancelled login");
                     }
                     else
                     {
                         NSLog(@"Login Success");
                         if ([result.grantedPermissions containsObject:@"email"])
                         {
                             NSLog(@"result is:%@",result);
                             [self fetchUserInfo];
                         }
                         else
                         {
        //                     [SVProgressHUD showErrorWithStatus:@"Facebook email permission error"];
                         }
                     }
                 }];
            }
        }
Run Code Online (Sandbox Code Playgroud)

- 获取用户信息

        -(void)fetchUserInfo
        {
            if ([FBSDKAccessToken currentAccessToken])
            {
                NSLog(@"Token is available : %@",[[FBSDKAccessToken currentAccessToken]tokenString]);

                [[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:@{@"fields": @"id, name, email"}]
                 startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
                     if (!error)
                     {
                         NSLog(@"results:%@",result);

                         NSString *email = [result objectForKey:@"email"];
                         NSString *userId = [result objectForKey:@"id"];

                         if (email.length >0 )
                         {
                             NSString *accessToken = [[FBSDKAccessToken currentAccessToken] tokenString];
                             [ref authWithOAuthProvider:@"facebook" token:accessToken
                                    withCompletionBlock:^(NSError *error, FAuthData *authData)
                              {
                                        if (error)
                                        {
                                            NSLog(@"Login failed. %@", error);
                                        }
                                        else
                                        {
                                            NSLog(@"Logged in! %@", authData);

                                            //Start you app Todo
                                        }
                         else
                         {
                             NSLog(@"Facebook email is not verified");
                         }
                     }
                     else
                     {
                         NSLog(@"Error %@",error);
                     }
                 }];

        }
Run Code Online (Sandbox Code Playgroud)
  • 我想用Facebook登录facebook应用程序登录.

Tej*_*hna 6

从V4.6.0它不会重定向到fb应用程序.见下文

(v4.6.0 - 2015年9月10日)此外,SDK对话框(如Login,Like,Share Dialogs)会根据设备自动确定最佳UI,包括SFSafariViewController而不是Safari.按照我们的准备iOS 9指南.

在此输入图像描述