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
El enlace es a documentos v1 viejos. Nuevo (v1.1) documentos: https://dev.twitter.com/docs/api/1.1/get/account/verify_credentials – joost
Actualizado. Gracias por el aviso. – Swift
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. –