web-dev-qa-db-fra.com

Obtenir les informations de l'utilisateur actuel à partir de l'API Twitter

Je construis une application Twitter (avec oAuth) et je ne trouve aucune information sur la façon dont je peux obtenir les informations de l'utilisateur actuel.

Par utilisateur actuel, j'entends l'utilisateur qui a accordé les autorisations à mon application et pour qui l'application fait les demandes à l'API.

Aucune suggestion?

51
Thomas
61
Swift
4
Pablo Torrecilla

En utilisant oAuth, vous pouvez appeler pour obtenir des informations sur votre utilisateur à partir de votre objet TwitterOAuth.

par exemple si  

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

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

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

Solution respectant iOS:

1) Si vous avez un compte Twitter (c'est-à-dire ACAccount à partir de ACAccountStore) sur votre appareil, la seule chose dont vous avez besoin est de le joindre à SLRequest et d'obtenir toutes les informations utilisateur du dictionnaire renvoyé:

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) Sinon, vous devez envoyer les informations d'identification de l'utilisateur OAuth (X-Auth). Le moyen le plus simple consiste à utiliser la classe TWTROAuthSigning pour récupérer des paramètres OAuth:

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

et que d'envoyer la demande ordinaire en joignant les informations d'identification sous forme de champs d'en-tête:

  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 vous supportez une ancienne version de Twitter SDK ou si vous recherchez plus d'options, je vous recommande de regarder STTwitter lib

0
David