Facebook Graph API dejó de enviar correo electrónico del usuario

Por alguna razón, Facebook dejó de devolver el correo electrónico del usuario en el usuario JSON. Vuelvo después de autenticar con éxito a un usuario.

Incluso actualicé FacebookSDK para iOS de v3.6 a v3.8 sin tener suerte. Todo estuvo funcionando bien hasta hace unas semanas, pero ya no. Es solo el correo electrónico, todas las demás properties, es decir, DOB, regresan bien. Facebook sigue cambiando su sistema de permissions, pero no estoy al tanto de un cambio reciente que podría haber causado esto. Cualquier puntero sería muy apreciado.

Por cierto, estoy intentando autenticar con mi propia count de FB que tiene un correo electrónico válido asociado y no he cambiado recientemente ninguna configuration de privacidad.

También intenté eliminar la aplicación de mi configuration de privacidad de Facebook y volver a autorizarla, pero aún no tuve suerte. Aquí está el código:

[FBSession openActiveSessionWithReadPermissions:@[@"user_about_me", @"user_location", @"user_birthday", @"email"] allowLoginUI:YES completionHandler:^(FBSession *session, FBSessionState status, NSError *error) { switch (status) { case FBSessionStateOpen: { [[FBRequest requestForMe] startWithCompletionHandler:^(FBRequestConnection *connection, NSDictionary<FBGraphUser> *user, NSError *error) { NSLog(@"User Data: %@", user); //no email in the json NSString *email = user[@"email"]; //obviously returns nil //rest of the code }]; } break; case FBSessionStateClosed: case FBSessionStateClosedLoginFailed: [FBSession.activeSession closeAndClearTokenInformation]; break; default: break; } }]; 

Captura de pantalla de la página de permissions de la aplicación de Facebook que muestra claramente que la configuré correctamente:

introduzca la descripción de la imagen aquí

Aquí está el usuario JSON que regrese a la callback API (he eliminado mi información personal).

 { bio = "My Bio"; birthday = "01/01/1900"; "first_name" = FN; gender = male; id = 00000000; "last_name" = LN; link = "https://www.facebook.com/FBName"; locale = "en"; location = { id = 11111111111111111; name = "City Name"; }; name = "FN LN"; quotes = ""; timezone = "0"; "updated_time" = "2000-00-07T00:00:21+0000"; username = USERNAME; verified = 1; } 

Resultó que Facebook no devuelve el correo electrónico del usuario cuando realiza una llamada gráfica si el correo electrónico primario asociado con esa count de Facebook se ha desactivado, deshabilitado o eliminado.

Puede suceder si no accede a su dirección de correo electrónico durante mucho time. Facebook probablemente lo descubre cuando sus correos electrónicos a su dirección primaria comienzan a recuperarse.

Pasos para que funcione nuevamente:

  1. Asegúrese de poder iniciar session en su count de correo electrónico y los correos electrónicos de Facebook no recibirán rebotes.

  2. Inicie session en Facebook y cambie su dirección de correo electrónico principal a otro correo electrónico.

  3. Facebook enviará un correo electrónico de verificación a su nueva dirección de correo electrónico, abrirá este correo electrónico y hará clic en verificar enlace.

  4. Inicie session nuevamente en Facebook y cambie su correo electrónico principal nuevamente a la dirección de correo electrónico anterior.

  5. Facebook enviará un correo electrónico de verificación a esta dirección de correo electrónico, ábralo y click él para verificar su correo electrónico.

  6. Espere un par de horas e intente nuevamente viola, su correo electrónico comenzará a bajar en el json.