【发布时间】:2013-08-02 12:44:15
【问题描述】:
我正在使用 MGTwitterEngine lib 来验证 Twitter 帐户,但在成功登录后我想获取用户个人资料图片但无法获取它并且以下方法停止工作:
https://api.twitter.com/1.1/users/profile_image?screen_name=username&size=bigger
我刚刚尝试了上述方法,但没有成功。然后我对此进行了大量研究,最终得到了以下 api 来获取用户个人资料信息,其中包括个人资料图片:
https://api.twitter.com/1.1/users/show.json?screen_name=username
但是这个 api 需要通过在我无法生成的请求标头中传递授权来进行身份验证。
这是我尝试过的代码:
这里的 authdata 是我在成功登录后从 MGTwitterEngine 库返回的字符串。
NSString *authData = [[NSUserDefaults standardUserDefaults] valueForKey:@"authData"];
NSString *subAuthdata = [authData substringFromIndex:[authData rangeOfString:@"oauth_token_secret="].location];
subAuthdata = [subAuthdata substringToIndex:[subAuthdata rangeOfString:@"&user_id="].location];
NSLog(@"%@", subAuthdata);
NSLog(@"encoded: %@", [self base64Encode:subAuthdata]);
NSString *accessTokenHeaderToPost = [NSString stringWithFormat:@"Basic %@", [self base64Encode:subAuthdata]];
NSString *twitURL = @"https://api.twitter.com/1.1/users/show.json?screen_name=username";
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:[NSURL URLWithString: twitURL]];
[request setHTTPMethod:@"GET"];
[request setValue:accessTokenHeaderToPost forHTTPHeaderField:@"Authorization"];
NSError *err;
NSURLResponse *response;
NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&err];
NSString *responseString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
NSLog (@"RESP: %@", responseString);
但它总是显示错误的身份验证数据。
请帮帮我...
【问题讨论】:
-
为什么不使用内置的 twitter sdk?大多数用户运行 ios>5.0(约 98%),它具有内置于 iOS 的 twitter api(如果我没记错的话,socialkit)。
标签: iphone ios twitter mgtwitterengine