Использование Google Toolbox для Mac OAuth для Google App Engine - PullRequest
2 голосов
/ 31 мая 2011

Я пытаюсь интегрировать приложение iOS с Google App Engine, используя OAuth.Я обнаружил, что в GTM есть контроллер OAuth - http://code.google.com/p/gtm-oauth/

Можно ли его использовать для подключения к Google App Engine?Если это так, что я могу указать в качестве параметра "scope" в

    - (id)initWithScope:(NSString *)scope
        language:(NSString *)language
  appServiceName:(NSString *)keychainAppServiceName
        delegate:(id)delegate 
finishedSelector:(SEL)finishedSelector;

Я пытался использовать адрес приложения App Engine (http://my -app-name.appspot.com ) но это не сработало.

Заранее спасибо!

Кстати, это своего рода дополнительный вопрос к Аутентификация в Google App Engine с устройства iOS .

1 Ответ

3 голосов
/ 01 февраля 2012

Поздний ответ я знаю, но, надеюсь, это кому-нибудь поможет:

MYSITE может быть что-то вроде thunderofthor.com

Шаг 1:

Настройте двухстороннюю OAuth для интересующего домена App Engine.Для этого войдите в систему с правами администратора как https://www.google.com/a/MYSITE. В разделе «Дополнительные инструменты» нажмите «Управление ключом домена OAuth».Здесь нажмите «Включить этот ключ пользователя» и «Разрешить доступ ко всем API», чтобы включить эти параметры.На стороне Google вы теперь можете обрабатывать запросы, которые используют ключ пользователя MYSITE и OAUTHCONSUMERSECRET .

Шаг 2:

В вашем коде сервлетаВы можете подтвердить, что клиент имеет правильные учетные данные, запросив OAuthConsumerKey, который будет MYSITE

public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
String user = null;
try {
   OAuthService oauth = OAuthServiceFactory.getOAuthService();
   user = oauth.getOAuthConsumerKey();
   LOG.info("Authenticated: " + user);
} catch (OAuthRequestException e) {
    LOG.info("Not authenticated: " + e.getMessage());
}

Шаг 3:

Загрузите GTMOAuth пакет от Google.Это позволит iOS легко общаться с вашим сервером.Вам не понадобится весь пакет для двухстороннего аутентификации.На самом деле все, что вам нужно, это файлы GTMOAuthAuthentication.Чтобы использовать в своем коде, сделайте что-то вроде следующего:

NSURL *url = [NSURL URLWithString:@"https://MYSITE/dosomething"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];

GTMOAuthAuthentication *auth = [[GTMOAuthAuthentication alloc] initWithSignatureMethod:kGTMOAuthSignatureMethodHMAC_SHA1 consumerKey:@"MYSITE" privateKey:@"OAUTHCONSUMERSECRET"] ;
[auth setVersion:@"1.0"];

[auth addRequestTokenHeaderToRequest:request];

// Perform request and get JSON back as a NSData object
NSHTTPURLResponse *response = nil;
NSError *error = nil;

NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];

Там!Безопасное общение без лишних усилий, без имени пользователя и пароля!

...