2010-06-27 226 views
48

我正在构建一个Twitter应用程序(使用oAuth),并且我无法找到关于如何获取当前用户信息的任何信息。从Twitter获取当前用户的信息API

当前用户,我的意思是授予我应用程序权限的用户以及应用程序向API发出请求的用户。

有什么建议吗?

回答

60

它实际上是 “账号/ verify_credentials” 为在这里看到:

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

+3

链接是旧的v1文档。新(v1.1)文档:https://dev.twitter.com/docs/api/1.1/get/account/verify_credentials – joost 2014-04-30 09:42:58

+0

已更新。感谢您的高举。 – Swift 2014-05-01 16:37:00

+1

如果您的应用程序未获批准,请将可选参数include_email设置为false https://dev.twitter.com/rest/reference/get/account/verify_credentials,否则您将获得“您的凭据不允许访问此资源”错误。 – 2016-05-07 23:05:34

2

使用OAuth您可以拨打电话,以从你的TwitterOAuth对象物体用户信息。

例如,如果

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

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

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

解决方案尊重的iOS:

1)如果你有一个Twitter帐户(即ACAccountACAccountStore),您需要的唯一东西就是将其附加到SLRequest并从返回的字典中获取所有用户信息:

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)否则 - 您需要发送OAuth(X-Auth)用户凭据。最简单的方法是使用TWTROAuthSigning类检索OAuth的PARAMS:

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

,比发送普通请求连接的凭据,头字段:

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

如果你支持的是旧版本的Twitter SDK或寻找更多的选择,我建议看看STTwitter lib