代码之家  ›  专栏  ›  技术社区  ›  Shahrukh

目标C-UIAlertView登录后输入电子邮件id(如果ios的电子邮件id为空)

  •  2
  • Shahrukh  · 技术社区  · 10 年前

    在我的代码中,如果用户使用手机号码登录facebook,有时我的电子邮件id为空值

    所以我希望uialertview输入电子邮件id并传递到我的api链接

    - (void) fetchFacebookUserInfo {
    if ([FBSDKAccessToken currentAccessToken]) {
        [[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:@{@"fields": @"first_name, last_name, picture.type(large), email, name, id, gender"} ]
         startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
             if (!error) {
                 NSLog(@"fetched user:%@", result);
    
                 NSLog(@"name:%@",[result objectForKey:@"name"]);
                 NSLog(@"id:%@",[result objectForKey:@"id"]);
                 NSLog(@"email:%@",[result objectForKey:@"email"]);
    
             if ([result objectForKey:@"email"]==NULL) {
    // here i want uialertview for enter email id with validation and pass email id to my Callapi             
                     }
                 } else {
                     [self CallApi:[result objectForKey:@"name"] :[result objectForKey:@"email"]];
                 }
             }
         }];
      }
    }
    
    1 回复  |  直到 10 年前
        1
  •  1
  •   Er.Shreyansh Shah Rajaram    10 年前

    在中定义strName 视图控制器.h 文件

    NSString *strName;
    

    现在在您的方法中:-

        - (void) fetchFacebookUserInfo {
        if ([FBSDKAccessToken currentAccessToken]) {
            [[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:@{@"fields": @"first_name, last_name, picture.type(large), email, name, id, gender"} ]
             startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
                 if (!error) {
                     NSLog(@"fetched user:%@", result);
    
                     NSLog(@"name:%@",[result objectForKey:@"name"]);
                     NSLog(@"id:%@",[result objectForKey:@"id"]);
                     NSLog(@"email:%@",[result objectForKey:@"email"]);
    
    strName = [result objectForKey:@"name"];
    
                 if ([result objectForKey:@"email"]==NULL) {
                    UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:APP_NAME message:@"Please enter email id" delegate:self cancelButtonTitle:@"Submit" otherButtonTitles:@"Cancel", nil];
            alertView.alertViewStyle = UIAlertViewStylePlainTextInput;
            [alertView show];
                         }
                     } else {
                         [self CallApi:strName:[result objectForKey:@"email"]];
                     }
                 }
             }];
          }
        }
    

    **确保在界面(.h文件)中设置了AlertViewDelegate,如下所示**

    @interface yourViewController:UIViewController<UIAlertViewDelegate>
    

    现在使用 UIAlertView的委托方法 如下所示:-

    -(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
        if(buttonIndex == 0){
            if(![CommonMethod validateEmailWithString:[alertView textFieldAtIndex:0].text]){
                NsLog(@"Please enter valid email address");
            }else{
                 [self callYourWebService:strName:[alertViewAtIndex:0].text];
            }
        }
    }
    

    希望这能帮助你,让你开心。