2014-01-06 2 views
0

Будучи новичком iOS и Objective-C, я пытаюсь создать приложение, где пользователь может пройти аутентификацию через Facebook, Google+ или 3 дальше (русский) социальные сети.Новичок пытается создать URL-адрес для запроса GET - мой тестовый код и скриншот включены

Для Facebook Я знаю, что я мог бы использовать SDK для Facebook или Social.framework, но для остальных - я должен использовать OAuth и UIWebView, потому что для них пока нет хороших SDK.

(я уже преуспел в том, что один раз - но это было для приложения Adobe AIR и теперь я пытаюсь научиться родной ...)

В Xcode 5.2 Я подготовил очень простой мастер-Detail приложение для iPhone и checked it into GitHub:

screenshot

Мой вопрос о построении NSString для ГЭТ (или тело в POST) запрос -

в настоящее время у меня есть следующий неудобный исходный код the DetailViewController.m:

- (NSString*)buildUrl 
{ 
    NSString *key = _dict[kKey]; 
    NSString *str = _dict[kAuthUrl]; 

    if ([key isEqual: kFB]) { 
     str = [str stringByAppendingString:@"display=touch"]; 
     str = [str stringByAppendingString:@"&response_time=token"]; 
     str = [str stringByAppendingString:@"&client_id="]; 
     str = [str stringByAppendingString:_dict[kAppId]]; 
     str = [str stringByAppendingString:@"&redirect_uri="]; 
     str = [str stringByAppendingString:_dict[kAppUrl]]; 
     //str = [str stringByAppendingString:@"&state="]; 
     //str = [str stringByAppendingString:rand(1000)]; 
    } else if ([key isEqual: kGG]) { 
    } else if ([key isEqual: kMR]) { 
    } else if ([key isEqual: kOK]) { 
    } else if ([key isEqual: kVK]) { 
    } 

    return str; 
} 

Мои вопросы:

  1. Вместо использования stringByAppendingString я мог использовать что-то лучше? Как, может быть, NSArray (или даже лучший NSDictionary), а затем каким-то образом присоединяется к нему с амперсандами inbetween?
  2. Как избежать объектов HTML в значении redirect_uri=?
  3. мне нужно, чтобы добавить случайное число в качестве значения state=, но я не уверен, какую функцию использовать там лучше ...

Вот что my app печатает в данный момент, для приведенного выше кода:

MyAuth [9626: 70b] запрос: {URL: https://graph.facebook.com/oauth/authorize?display=touch&response_time=token&client_id=432298283565593&redirect_uri=https://www.facebook.com/connect/login_success.html}

(который не является хорошо: URL, в конце концов, не избежали и нет никакого случайного номер состояния).

ответ

1

stringWithFormat: - твой друг.

- (NSString*)buildUrl 
{ 
    NSString *key = _dict[kKey]; 
    NSString *str = _dict[kAuthUrl]; 

    if ([key isEqual: kFB]) { 
     NSString *escapedURI = [_dict[kAppUrl] stringByAddingPercentEscapesUsingEncoding:NSUTF8Encoding]; 
     int state = arc4random_uniform(1000); 
     str = [NSString stringWithFormat:@"%@display=touch&response_time=token&client_id=%@&redirect_uri=%@&state=%d", _dict[kAuthUrl], _dict[kAppId], escapedURI, state]; 
    } else if ([key isEqual: kGG]) { 
    } else if ([key isEqual: kMR]) { 
    } else if ([key isEqual: kOK]) { 
    } else if ([key isEqual: kVK]) { 
    } 

    return str; 
} 
+0

Спасибо, это выглядит лучше, чем мой код. Таким образом, нет хорошего метода присоединиться к 'NSDictionary' к' NSString'? –

+0

Мой ответ показывает хороший способ присоединиться к словарю и строке. – rmaddy

 Смежные вопросы

  • Нет связанных вопросов^_^