Obtener perfil de usuario detalles (especialmente la dirección de correo electrónico) de Twitter en iOS

Estoy con el objetivo de obtener un detalles de usuario basado en su cuenta de Twitter. Ahora bien, primero de todo, me explico lo que quiero hacer.

En mi caso, el usuario verá una opción para de Signo con cuenta de Twitter. Así, en el usuario de la cuenta de Twitter, quiero ser capaz de obtener los datos del usuario (por ejemplo, correo electrónico-id, nombre, foto de perfil, fecha de nacimiento, sexo, etc..) y guardar esos datos en la base de datos. Ahora, muchas personas probablemente me sugieren el uso de ACAccount y ACAccountStore, una clase que proporciona una interfaz para el acceso, la manipulación y el almacenamiento de cuentas. Pero en mi caso, me quiero inscribir usuario, incluso si el usuario no ha configurado una cuenta de Twitter en iOS Aplicación de Configuración. Quiero que el usuario navegue a la pantalla de inicio de sesión de Twitter (en Safari o en la propia Aplicación, o mediante cualquier otra alternativa).

También me he referido a la documentación de Twitter haber API lista aquí. Pero yo soy mucho confundirse cómo el usuario debe ser presentado en una pantalla de inicio de sesión para iniciar sesión en la cuenta de Twitter y cómo voy a obtener la información de perfil. Debo usar UIWebView, o redirigir usuario a Safari o adoptar otra forma para que ?

InformationsquelleAutor NSPratik | 2015-05-14

5 Kommentare

  1. 3

    Twitter ha proporcionado un marco hermoso para que, usted sólo tiene que integrar en su aplicación.

    https://dev.twitter.com/twitter-kit/ios

    Dispone de un sencillo Método de inicio de Sesión:-

    //Objective-C
    TWTRLogInButton* logInButton =  [TWTRLogInButton
                                         buttonWithLogInCompletion:
                                         ^(TWTRSession* session, NSError* error) {
        if (session) {
             NSLog(@"signed in as %@", [session userName]);
        } else {
             NSLog(@"error: %@", [error localizedDescription]);
        }
    }];
    logInButton.center = self.view.center;
    [self.view addSubview:logInButton];

    Este es el proceso de obtener información de perfil de usuario:-

    /* Get user info */
            [[[Twitter sharedInstance] APIClient] loadUserWithID:[session userID]
                                                      completion:^(TWTRUser *user,
                                                                   NSError *error)
            {
                //handle the response or error
                if (![error isEqual:nil]) {
                    NSLog(@"Twitter info   -> user = %@ ",user);
                    NSString *urlString = [[NSString alloc]initWithString:user.profileImageLargeURL];
                    NSURL *url = [[NSURL alloc]initWithString:urlString];
                    NSData *pullTwitterPP = [[NSData alloc]initWithContentsOfURL:url];
    
                    UIImage *profImage = [UIImage imageWithData:pullTwitterPP];
    
    
                } else {
                    NSLog(@"Twitter error getting profile : %@", [error localizedDescription]);
                }
            }];

    Creo resto se puede encontrar desde Twitter Kit Tutorial, sino que también permite a petición de un usuario de correo electrónico, llamando a la TwitterAuthClient#requestEmail método, el paso de un válido TwitterSession y de devolución de llamada.

    • No podemos recibir correo electrónico utilizando la Api de Twitter. Twitter no permiten exponer de usuario, dirección de correo electrónico.
    • Quién dijo que no es posible, Twitter Kit permite a petición de un usuario de correo electrónico, llamar a la TwitterAuthClient#requestEmail método, el paso de un válido TwitterSession y de devolución de llamada. Leer cuidadosamente el Twitter Kit doc comentar.
    • Me refería a un montón de mensajes diciendo que no es posible, y yo también he leído la documentación de Twitter. Según su documentación, si tenemos un usuario dirección de correo electrónico, nuestra Aplicación debe ser nominado por entonces…
    • Me decidí a usar Twitter kit. Respuesta aceptada… Todo funciona bien. Sólo voy a tener que hacer mi App blanco-enumerados en Twitter a petición de usuario su dirección de correo electrónico. Actualmente me estoy poniendo de nil como la dirección de correo electrónico.
    • Compruebe el 3er comentario, correo electrónico de recuperación es posible, sólo tienes que leer la documentación cuidadosamente.
    • Vizllx, he explorado mucho en la web pero no podía encontrar una manera de llamar la TwitterAuthClient#requestEmail método sugerido por usted. También, como por Twitter documentación, se tendrá que llenar un formulario aquí. Pero no hay ninguna opción para solicitar de correo electrónico del usuario. Por favor me ayude. Estoy desesperado a la solución.

  2. 5

    Finalmente, después de una larga conversación con [email protected], tengo mi App incluido en la lista blanca. Aquí está la historia:

    • Enviar correo a [email protected] con algunos detalles acerca de su Aplicación, como clave de Consumidor, App Store enlace de una Aplicación, Enlace a la política de privacidad, los Metadatos, las Instrucciones sobre cómo iniciar sesión en nuestra Aplicación. La mención de correo a la que desea acceder el correo electrónico del usuario dentro de la Aplicación.

    • Van a revisar su Aplicación y respuesta dentro de los 2-3 días hábiles.

    • Una vez que dicen que su Aplicación está incluido en la lista blanca, actualización de su configuración de la Aplicación en Twitter portal para Desarrolladores. Iniciar sesión en apps.twitter.com y:

      1. En la pestaña de «Configuración», añadir los términos de servicio y política de privacidad URL
      2. En los ‘Permisos’ ficha, cambiar el token del ámbito de aplicación a la solicitud de correo electrónico. Esta opción sólo se ha visto, una vez que su Aplicación se presenta incluido en la lista blanca.

    Ponga sus manos en el código:

    De acuerdo con la declaración de Vizllx: «Twitter ha proporcionado un marco hermoso para que, usted sólo tiene que integrar en su aplicación».

    Obtener el correo electrónico del usuario

    -(void)requestUserEmail
        {
            if ([[Twitter sharedInstance] session]) {
    
                TWTRShareEmailViewController *shareEmailViewController =
                [[TWTRShareEmailViewController alloc]
                 initWithCompletion:^(NSString *email, NSError *error) {
                     NSLog(@"Email %@ | Error: %@", email, error);
                 }];
    
                [self presentViewController:shareEmailViewController
                                   animated:YES
                                 completion:nil];
            } else {
                //Handle user not signed in (e.g. attempt to log in or show an alert)
            }
        }

    Obtener perfil de usuario

    -(void)usersShow:(NSString *)userID
    {
        NSString *statusesShowEndpoint = @"https://api.twitter.com/1.1/users/show.json";
        NSDictionary *params = @{@"user_id": userID};
    
        NSError *clientError;
        NSURLRequest *request = [[[Twitter sharedInstance] APIClient]
                                 URLRequestWithMethod:@"GET"
                                 URL:statusesShowEndpoint
                                 parameters:params
                                 error:&clientError];
    
        if (request) {
            [[[Twitter sharedInstance] APIClient]
             sendTwitterRequest:request
             completion:^(NSURLResponse *response,
                          NSData *data,
                          NSError *connectionError) {
                 if (data) {
                     //handle the response data e.g.
                     NSError *jsonError;
                     NSDictionary *json = [NSJSONSerialization
                                           JSONObjectWithData:data
                                           options:0
                                           error:&jsonError];
                     NSLog(@"%@",[json description]);
                 }
                 else {
                     NSLog(@"Error code: %ld | Error description: %@", (long)[connectionError code], [connectionError localizedDescription]);
                 }
             }];
        }
        else {
            NSLog(@"Error: %@", clientError);
        }
    }

    Espero que ayude !!!

  3. 3

    En Twitter usted puede conseguir user_name y user_id sólo. Es muy seguro que no puedes capturar email id, birth date, gender etc.., en comparación con Facebook, Twitter es muy confidencial para el suministro de los datos.

    necesidad ref: link1.

    • En la documentación de Twitter, han mencionado que el método para obtener el usuario id de correo electrónico. También tengo algo de ejemplo para descargar las fotos de perfil de usuario.
    • ya podemos recuperar de usuario, imagen u cuando pasa el screen_name después de que se captura la imagen , aquí adjunto la imagen por favor, consulte el enlace
    • en mi conocimiento, he utilizado la api de twitter en los últimos 8 o 9 proyectos, que no podemos recuperar el Id de correo electrónico en Cuenta marco por favor, consulte esta ref link2
    • puede ser que algunos third_parties proporcionar esto , yo no soy visto, si necesita algo, sin duda espero con usted amigo
    • Anbu.Karthik, por favor revise mi mayor respuesta. Es posible y ahora soy capaz de conseguir el correo electrónico del usuario.
  4. 1

    En Swift y Xcode 4.2 10.1

    Es llegar por correo electrónico también.

    import TwitterKit 
    
    
    @IBAction func onClickTwitterSignin(_ sender: UIButton) {
    
        TWTRTwitter.sharedInstance().logIn { (session, error) in
        if (session != nil) {
            let name = session?.userName ?? ""
            print(name)
            print(session?.userID  ?? "")
            print(session?.authToken  ?? "")
            print(session?.authTokenSecret  ?? "")
            let client = TWTRAPIClient.withCurrentUser()
            client.requestEmail { email, error in
                if (email != nil) {
                    let recivedEmailID = email ?? ""
                    print(recivedEmailID)
                }else {
                    print("error--: \(String(describing: error?.localizedDescription))");
                }
            }
                //To get profile image url and screen name
                let twitterClient = TWTRAPIClient(userID: session?.userID)
                    twitterClient.loadUser(withID: session?.userID ?? "") {(user, error) in
                    print(user?.profileImageURL ?? "")
                    print(user?.profileImageLargeURL ?? "")
                    print(user?.screenName ?? "")
                }
            let storyboard = self.storyboard?.instantiateViewController(withIdentifier: "SVC") as!   SecondViewController
            self.navigationController?.pushViewController(storyboard, animated: true)
        }else {
            print("error: \(String(describing: error?.localizedDescription))");
        }
        }
    }

    Siga las Harshil Kotecha respuesta.

    Paso 1 : llegamos a https://apps.twitter.com/app/

    Paso 2 : haga clic en ur de la aplicación > haga clic en la ficha permisos .

    Paso 3 : aquí marque la casilla de correo electrónico

    Obtener perfil de usuario detalles (especialmente la dirección de correo electrónico) de Twitter en iOS

    Si desea cerrar la sesión

    let store = TWTRTwitter.sharedInstance().sessionStore
    if let userID = store.session()?.userID {
        print(store.session()?.userID ?? "")
        store.logOutUserID(userID)
        print(store.session()?.userID ?? "")
        self.navigationController?.popToRootViewController(animated: true)
    }

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea