【发布时间】:2011-03-08 21:14:15
【问题描述】:
我正在构建一个 Twitter 应用程序(使用 oAuth),但我找不到任何关于如何获取当前用户信息的信息。
当前用户是指授予我的应用权限以及应用向 API 发出请求的用户。
有什么建议吗?
【问题讨论】:
标签: twitter
我正在构建一个 Twitter 应用程序(使用 oAuth),但我找不到任何关于如何获取当前用户信息的信息。
当前用户是指授予我的应用权限以及应用向 API 发出请求的用户。
有什么建议吗?
【问题讨论】:
标签: twitter
实际上是“account/verify_credentials”,如下所示:
【讨论】:
include_email设置为false dev.twitter.com/rest/reference/get/account/verify_credentials,否则会出现Your credentials do not allow access to this resource错误。
使用 oAuth,您可以调用以从您的 TwitterOAuth 对象获取用户信息。
例如如果
$oauth = new TwitterOAuth([keys here]);
$credentials = $oauth->get('account/verify_credentials');
echo "Connected as @" . $credentials->screen_name ."\n";
【讨论】:
关于 iOS 的解决方案:
1) 如果您的设备上有 Twitter 帐户(即 ACAccount 来自 ACAccountStore),您只需将其附加到 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 lib
【讨论】:
API v. 1.1 文档的链接:https://dev.twitter.com/docs/api/1.1/get/account/verify_credentials
【讨论】: