ios objective-c drupal

iOS-Mensaje de recuperación de contraseña de activación de Drupal



objective-c (3)

Simplemente debe hacer lo siguiente, suponiendo que forgotField toma el ID de correo electrónico como entrada y tiene la validación adecuada para verificar el correo electrónico válido.

- (IBAction)sendButton:(id)sender { [DIOSUser userSendPasswordRecoveryEmailWithEmailAddress:self.forgotField.text success:^(AFHTTPRequestOperation *operation, id responseObject) failure:^( AFHTTPRequestOperation *operation , NSError *error )){ if(!error){ UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Retrieving Password" message:@"We''re helping you retrieve your password! Please check your email in a few minutes for a rescue link." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; [alert show]; } }]; }

Encuentra la documentación aquí

Aclamaciones.

En mi aplicación iOS, necesito que mis usuarios puedan recuperar / restablecer sus contraseñas. Estoy usando Drupal iOS SDK para administrar el inicio de sesión de usuario. Todo funciona, sin embargo, estoy tratando de averiguar cómo publicar la dirección de correo electrónico del usuario en el punto final de servicios para activar el correo electrónico de recuperación de contraseñas drupal. Por ejemplo, el usuario ingresa el correo electrónico en UITextField y toca un botón de enviar. Sin embargo, no parece haber documentación para esto?

El código es el siguiente: ¿no estoy seguro de qué método debo poner dentro de mi sendButton? DIOSUser? DIOSesión?

DIOSUser.m

+ (void)userSendPasswordRecoveryEmailWithEmailAddress: (NSString*)email success:(void (^)(AFHTTPRequestOperation *operation, id responseObject)) success failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error)) failure { NSString *path = [NSString stringWithFormat:@"user/request_new_password/%@", email]; NSLog(@"This is the input email %@", email); [[DIOSSession sharedSession] sendRequestWithPath:path method:@"POST" params:nil success:success failure:failure]; }

ViewController.m

- (void)viewDidLoad { [super viewDidLoad]; self.forgotField.returnKeyType = UIReturnKeyDone; [self.forgotField setDelegate:self]; // Do any additional setup after loading the view from its nib. UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissKeyboard)]; [self.view addGestureRecognizer:tap]; } - (IBAction)return:(id)sender { [self dismissViewControllerAnimated:YES completion:nil]; } - (IBAction)sendButton:(id)sender { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Retrieving Password" message:@"We''re helping you retrieve your password! Please check your email in a few minutes for a rescue link." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; [alert show]; }

Registro de errores:

2017-07-12 22:29:34.264669-0700 myApp[4523:1331335] ----- DIOS Failure ----- Status code: 404 URL: http://url.com/endpoint01/user/request_new_password/[email protected] ----- Response ----- ----- Error ----- Request failed: not found (404)


Puede enviar una solicitud de reinicio usando el siguiente código:

- (IBAction)sendButton:(id)sender { [DIOSUser userSendPasswordRecoveryEmailWithEmailAddress:self.txtForgotPassword.text success:^(AFHTTPRequestOperation *operation, id responseObject) { // Success Block UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Retrieving Password" message:@"We have send you reset link to your email Please check your email." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; [alert show]; }failure:^( AFHTTPRequestOperation *operation , NSError *error ){ // Failure Block if(!error){ // error.description UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Oopss" message: error.description delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; [alert show]; } }]; }

Espero que esto ayude .


Terminé logrando esto con el siguiente código: ¡publicación en caso de que alguien lo encuentre útil! Dos alternativas ligeramente diferentes dependiendo de la estructura de su base de datos:

- (IBAction)sendButton:(id)sender { [[DIOSSession sharedSession] getCSRFTokenWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) { NSString *csrfToken = [NSString stringWithUTF8String:[responseObject bytes]]; NSString *email = self.forgotField.text; NSString *urlString2 = [NSString stringWithFormat:@"http://myapp.com/endpoint01/user/request_new_password?name=%@", email]; NSDictionary *jsonBodyDict = @{@"name":email}; NSData *jsonBodyData = [NSJSONSerialization dataWithJSONObject:jsonBodyDict options:kNilOptions error:nil]; NSMutableURLRequest *request = [NSMutableURLRequest new]; request.HTTPMethod = @"POST"; // for alternative 1: [request setURL:[NSURL URLWithString:urlString2]]; [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; [request setValue:@"application/json" forHTTPHeaderField:@"Accept"]; [request setHTTPBody:jsonBodyData]; // for alternative 2: [request setURL:[NSURL URLWithString:urlString2]]; [request addValue:csrfToken forHTTPHeaderField:@"X-CSRF-Token"]; NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration]; NSURLSession *session = [NSURLSession sessionWithConfiguration:config delegate:nil delegateQueue:[NSOperationQueue mainQueue]]; NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) { NSLog(@"Yay, done! Check for errors in response!"); NSHTTPURLResponse *asHTTPResponse = (NSHTTPURLResponse *) response; NSLog(@"The response is: %@", asHTTPResponse); // set a breakpoint on the last NSLog and investigate the response in the debugger // if you get data, you can inspect that, too. If it''s JSON, do one of these: NSDictionary *forJSONObject = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil]; // or NSArray *forJSONArray = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil]; }]; [task resume]; UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Retrieving Password" message:@"We''re helping you retrieve your password! Please check your email in a few minutes for a rescue link." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; [alert show]; } failure:^(AFHTTPRequestOperation *operation, NSError *error) { }]; }