2012-03-18 3 views
0

я искал долго, но мог только найти действительно основную информацию, поэтому я решил спросить здесь:Secure Authentication: Рельсы WebApp и IOS App

Простая вещь, что я хочу аутентифицировать IOS приложение против через рельсы веб приложение. Я думал о чем-то вроде HTTP Basic или Token based - но это не то, что я действительно хочу. Я хочу пройти аутентификацию с OAuth из Facebook, Twitter и т. Д. На стороне рельсов это очень просто. Устройство с omniAuth отлично справилось с этой задачей. Но как я могу аутентифицировать приложение iOS с помощью этого метода?

Было бы здорово, если бы кто-нибудь мог дать более подробный обзор того, как это сделать.

ответ

1

Думаю, у вас есть два решения.

1: WebView

Использование WebView для OAuth запроса/ответа.

SHKOAuthView ShareKit поможет вам понять.

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 
{  
    // "OAUTH_DID_FINISH_SUCCESS_URL" is URL your wab app display after finishing OAuth authentication successfully. 
    if ([request.URL.absoluteString isEqualToString:OAUTH_DID_FINISH_SUCCESS_URL]) 
    { 
     // OAuth success 
     return NO; 
    } 
    return YES; 
} 

После завершения аутентификации OAuth с WebView, IOS приложение автоматически сохранять куки (если веб-приложение сохранить печенье), так что IOS приложение может нормально запрос/ответ на веб-приложение. Кстати, Android не может автоматически сохранять cookie, поэтому проверка подлинности на токенах лучше, если вам тоже нужно поддерживать Android-приложение.

2: RestKit

RestKit поддержки OAuth.

Я думаю, что устройство не лучшее решение для приложения iOS с OAuth. Я думаю, что проверка подлинности с omniAuth лучше.

+0

Это решает только одну часть проблемы. Но для аутентификации через OAuth мне нужно быть самим поставщиком OAuth, или я ошибаюсь? С вашим решением я мог аутентифицировать устройство IOS против OAuth поставщика - но мне нужно, чтобы проверить подлинность моего WebApp против OAuth поставщика и аутентификации моего IOS устройства против моего WebApp Пример: 'Twitter <-> WebApp <-> IOS App' – PascalTurbo

+0

Я использовал первое решение (1: WebView). Мое веб-приложение (Rails 3.1) - [SingSing] (http://www.singsing.biz/). Мое приложение iOS - [A Cappella LITE] (http://itunes.apple.com/us/app/acappellalite/id370754632?mt=8). – dadachi

+0

Да, это здорово. Но как вы решаете Rails-Part? – PascalTurbo