在我的应用程序中,我需要从此URL获取参数“access_token”和“user_id”:
https://oauth.vk.com/blank.html#access_token=b1b33dfaa3&expires_in=86400&user_id=311515
以下是我在webViewDidFinishLoad中访问“user_id”参数的代码:
NSArray *userAr = [[[[webView request] URL] absoluteString] componentsSeparatedByString:@"&user_id="];
NSString *user_id = [userAr lastObject];
如何获得“access_token”?如果我使用相同的方法它不起作用......
答案 0 :(得分:1)
我在我的应用程序中实现了相同的功能。
如果您使用webView来使用此
NSURL* url = [[webView request] URL];
NSString *string = [[url absoluteString] stringByReplacingOccurrencesOfString:@"#" withString:@"&"]; (here it's tweak to chnage '#' to '&')
NSArray *components = [string componentsSeparatedByString:@"&"];
NSLog(@"queryParams %@", components);
基本上我们需要划分我们的URL in to two sub-part
,根据这个你得到main url and other part as list of parameter
。
在这里,您将获得与URL
希望这会对你有所帮助。
答案 1 :(得分:0)
尝试理解代码。 componentsSeparatedByString
创建一个由&user_id=
分隔的较小字符串数组。这意味着,您的输出将是:
Array of ["https://oauth.vk.com/blank.html#access_token=b1b33dfaa3&expires_in=86400", "311515"]
现在你明白了为什么lastObject
可以获得user_id
的价值。现在尝试使用相同的方法来获取access_token
的值。
提示:您需要将&
设置为分隔符。
答案 2 :(得分:0)
我将这些代码细化为您提供帮助:
NSArray *query = @"https://oauth.vk.com/blank.html#access_token=b1b33dfaa3&expires_in=86400&user_id=311515 ";
NSMutableDictionary *params = [[NSMutableDictionary alloc] init];
for (NSString *param in [query componentsSeparatedByString:@"&"]) {
NSArray *parts = [param componentsSeparatedByString:@"="];
if([parts count] < 2) continue;
[params setObject:[parts objectAtIndex:1] forKey:[parts objectAtIndex:0]];
}