2010-06-27 21 views
48

Estoy construyendo una aplicación de Twitter (con oAuth) y no puedo encontrar ninguna información sobre cómo puedo obtener la información del usuario actual.Obten la información del usuario actual de Twitter API

Por usuario actual, me refiero al usuario que otorgó los permisos de mi aplicación y para los que la aplicación realiza las solicitudes a la API.

¿Alguna sugerencia?

Respuesta

60

En realidad, fue una "cuenta/verify_credentials" como se ve aquí:

https://dev.twitter.com/docs/api/1.1/get/account/verify_credentials

+3

El enlace es a documentos v1 viejos. Nuevo (v1.1) documentos: https://dev.twitter.com/docs/api/1.1/get/account/verify_credentials – joost

+0

Actualizado. Gracias por el aviso. – Swift

+1

Si su aplicación no es aprobada, establezca el parámetro opcional 'include_email' en false https://dev.twitter.com/rest/reference/get/account/verify_credentials, de lo contrario obtendrá' Sus credenciales no permiten el acceso a este recurso' error. –

2

mediante OAuth que son capaces de hacer llamadas para obtener información del usuario de su objeto TwitterOAuth.

por ejemplo, si

$oauth = new TwitterOAuth([keys here]); 

$credentials = $oauth->get('account/verify_credentials'); 

echo "Connected as @" . $credentials->screen_name ."\n"; 
0

solución que respete iOS:

1) Si usted tiene una cuenta de Twitter (es decir, ACAccount de ACAccountStore) en su dispositivo, lo único que necesita es adjuntarlo a SLRequest y obtener toda la información del usuario del diccionario devuelto:

NSURL *url = [NSURL URLWithString:@"https://api.twitter.com/1.1/account/verify_credentials.json"]; 
NSMutableDictionary *params = [NSMutableDictionary new]; 
[params setObject:[Twitter sharedInstance].session.userID forKey:@"user_id"]; 
[params setObject:@"0" forKey:@"include_entities"]; 
[params setObject:@"1" forKey:@"skip_status"]; 
[params setObject:@"1" forKey:@"include_email"]; 

SLRequest *request = [SLRequest requestForServiceType:SLServiceTypeTwitter requestMethod:SLRequestMethodGET URL:url parameters:params]; 
[request setAccount:twitterAccount]; //one of the Twitter Acc 
[request performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) { 
    if (responseData) { 
     NSDictionary *twitterData = [NSJSONSerialization JSONObjectWithData:responseData options:NSJSONReadingAllowFragments error:NULL]; 
     }); 

    }else { 
     NSLog(@"Error while downloading Twitter user data: %@", error); 
    } 
}]; 

2) De lo contrario, debe enviar las credenciales de usuario de OAuth (X-Auth). La forma más sencilla es utilizar la clase TWTROAuthSigning para recuperar OAuth-params:

TWTROAuthSigning *oauthSigning = 
         [[TWTROAuthSigning alloc] 
          initWithAuthConfig: 
          [Twitter sharedInstance].authConfig 
          authSession:session]; 
         NSDictionary *authHeaders = 
         [oauthSigning OAuthEchoHeadersToVerifyCredentials]; 

y de enviar la solicitud de ordinario adjuntando credenciales como campos de cabecera:

NSString *oauthParameters = authHeaders[@"X-Verify-Credentials-Authorization"]; 
         NSString *urlString = authHeaders[@"X-Auth-Service-Provider"]; 
         NSMutableURLRequest *request = 
         [NSMutableURLRequest requestWithURL:[NSURL URLWithString:urlString]]; 
         request.allHTTPHeaderFields = @{@"Authorization":oauthParameters}; 
         [request setHTTPMethod:@"GET"]; 
         NSOperationQueue *queue = [[NSOperationQueue alloc]init]; 
         [NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse *response,NSData *data,NSError *error){ 
           NSDictionary *twitterData = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:NULL]; 
         }]; 

Si usted apoya una versión antigua de Twitter SDK o buscando más opciones Recomiendo mirar STTwitter lib

Cuestiones relacionadas