2010-06-27 24 views
48

Tôi đang xây dựng một ứng dụng Twitter (với oAuth) và tôi không thể tìm thấy bất kỳ thông tin nào về cách tôi có thể lấy thông tin của người dùng hiện tại.Nhận thông tin của người dùng hiện tại từ Twitter API

Bởi người dùng hiện tại, tôi có nghĩa là người dùng đã cấp quyền cho ứng dụng của tôi và ứng dụng đang đưa ra yêu cầu cho API.

Mọi đề xuất?

Trả lời

60

Đó là thực sự "tài khoản/verify_credentials" như đã thấy ở đây:

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

+3

Liên kết đến tài liệu cũ v1. Tài liệu mới (v1.1): https://dev.twitter.com/docs/api/1.1/get/account/verify_credentials – joost

+0

Đã cập nhật. Cảm ơn cho những người đứng đầu lên. – Swift

+1

Nếu ứng dụng của bạn không được chấp thuận, hãy đặt tham số tùy chọn 'include_email' thành false https://dev.twitter.com/rest/reference/get/account/verify_credentials nếu không bạn sẽ nhận được' Thông tin đăng nhập của bạn không cho phép truy cập vào tài nguyên này' lỗi. –

2

Sử dụng OAuth bạn có thể thực hiện cuộc gọi để có được thông tin người dùng từ đối tượng TwitterOAuth của bạn.

ví dụ như nếu

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

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

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

Giải pháp tôn trọng iOS:

1) Nếu bạn có một tài khoản Twitter (tức ACAccount từ ACAccountStore) trên thiết bị của bạn, điều duy nhất bạn cần là đính kèm nó vào SLRequest và nhận tất cả thông tin người dùng từ từ điển được trả về:

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) Nếu không - bạn cần gửi thông tin xác thực người dùng OAuth (X-Auth). Cách đơn giản nhất là sử dụng lớp TWTROAuthSigning để lấy OAuth-params:

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

và hơn gửi yêu cầu thông thường gắn thông tin như các lĩnh vực tiêu đề:

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]; 
         }]; 

Nếu bạn hỗ trợ một phiên bản cũ của Twitter SDK hoặc tìm kiếm thêm tùy chọn Tôi khuyên bạn nên xem số STTwitter lib

Các vấn đề liên quan