Я использую OAuth / xAuth в приложении для Twitter на iPhone, и у меня проблема с паролями, содержащими специальные символы. Например, «пароль &». Прежде всего, я конвертирую & в% 26, выполнив:
NSString *encodedPassword = (NSString *)CFURLCreateStringByAddingPercentEscapes(
NULL,
(CFStringRef)thePassword,
NULL,
(CFStringRef)@"!*'();:@&=+$,/?%#[]",
kCFStringEncodingUTF8 );
Это прекрасно кодирует в "пароль% 26". Затем я настраиваю его в качестве параметра OAMutableURLRequest:
[request setParameters:[NSArray arrayWithObjects:
[OARequestParameter requestParameterWithName:@"x_auth_mode" value:@"client_auth"],
[OARequestParameter requestParameterWithName:@"x_auth_username" value:encodedUsername],
[OARequestParameter requestParameterWithName:@"x_auth_password" value:encodedPassword],
nil]];
При отправке запроса с использованием OADataFetcher я получаю NSUrlError:
Ошибка домена = NSURLErrorDomain Code = -1012 UserInfo = 0x4823e00 "Операция не может быть завершена. (NSURLErrorDomain ошибка -1012.)"
Что я здесь не так делаю? Если я оставлю & в пароле, он разрушит мой код (массив setParamaters вылетит). Кто-нибудь сталкивался с этим перед использованием OAuth?
Если у меня есть буквенно-цифровой пароль, все работает нормально ... Спасибо за любые рекомендации!