从Twitter API获取当前用户信息

58
我正在开发一个使用oAuth的Twitter应用程序,但我无法找到如何获取当前用户信息的任何信息。
所谓当前用户,是指授予我的应用程序权限并对其进行API请求的用户。
有什么建议吗?
4个回答

67

3
链接指向旧的v1文档。新的(v1.1)文档:https://dev.twitter.com/docs/api/1.1/get/account/verify_credentials。 - joost
更新了。谢谢提醒。 - Swift
1
如果您的应用程序未经批准,请将可选参数include_email设置为false https://dev.twitter.com/rest/reference/get/account/verify_credentials,否则您将收到“您的凭据不允许访问此资源”错误。 - shukshin.ivan
我认为链接又过时了。新的URL似乎是https://developer.twitter.com/en/docs/accounts-and-users/manage-account-settings/api-reference/get-account-verify_credentials.html。 - kunambi
如何从此链接在Android应用中获取用户信息?我已经集成了Twitter登录,但是之后没有找到如何获取用户信息。我应该在我的应用程序中解析JSON数据吗? - ninbit
名称不太具描述性,这就是为什么它比必要的更难找到 :) - Ardee Aram

4

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帐户(即ACAccountStore中的ACAccount),您唯一需要做的就是将其附加到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参数:

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


请问您能否分享获取Twitter粉丝列表的代码? 目前每当我尝试请求访问带有类型的账户时,它总是返回false。 - Anjali jariwala
@Anjalijariwala,你有获取Twitter账户个人资料(包括emailID)的示例吗?我在我的React Native应用中使用了“react-native-login-twitter”包。认证成功并获得了个人资料的authToken和authTokenSecret,但是电子邮件为空。是否需要进行第二次调用以使用authToken和authTokenSecret获取更多个人资料信息?如果需要,请帮忙解决。谢谢 :) - Ajith

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接