2014-02-16 1 views
0


В моем приложении мне нужно получить параметры «access_token» и «user_id» из этого URL:
https://oauth.vk.com/blank.html#access_token=b1b33dfaa3&expires_in=86400&user_id=311515

Вот мой код для доступа к параметру «user_id» в webViewDidFinishLoad:Получить параметр из NSURL

NSArray *userAr = [[[[webView request] URL] absoluteString] componentsSeparatedByString:@"&user_id="]; 

NSString *user_id = [userAr lastObject]; 


Как я получаю "access_token"? Если я использую тот же метод, он не работает ...

ответ

0

Попытайтесь понять код. componentsSeparatedByString создает массив меньших строк, разделенных &user_id=. Это означает, что выход для вас будет:

Array of ["https://oauth.vk.com/blank.html#access_token=b1b33dfaa3&expires_in=86400", "311515"] 

Теперь вы видите, почему lastObject получает вас значение user_id. Теперь попробуйте использовать те же методы, чтобы получить значение access_token.

Подсказка: вам необходимо установить & в качестве разделителя.

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

Надеюсь, это вам поможет.