2012-03-28 14 views
13

Estoy utilizando RestKit con un proveedor propio de OAuth2. Intento autenticarme a través del Resource Owner Password Credentials.RestKit OAuth 2 Flujo de autenticación de contraseña

¿Alguien podría proporcionar algún código de ejemplo y las mejores prácticas para solicitar recursos protegidos a través de RestKit en general y autenticarse a través de credenciales para obtener un token de acceso en específico?

Probablemente ResKit en sí no es la mejor opción?

Respuesta

9

que debe salir este enlace: https://github.com/RestKit/RestKit/wiki/OAuth-Support-on-RestKit

Usted puede intentar algo como esto (lo hago en mi aplicación delegado):

RKObjectManager *manager = [RKObjectManager objectManagerWithBaseURLString:@"http://www.yourdomain.com"]; 
[manager setSerializationMIMEType:RKMIMETypeJSON]; 

[[RKClient sharedClient] setAuthenticationType:RKRequestAuthenticationTypeOAuth2]; 
[[RKClient sharedClient] setUsername:@"username"]; 
[[RKClient sharedClient] setPassword:@"password"]; 

Nota: yo no tengo lo probé porque utilizo AuthenticationTypeHTTPBasic en su lugar

Espero que esto ayude!

Editar:

me encontré con este ejemplo de código que puede ayudar a más:

+0

Gracias por el ejemplo y referencias útiles. –

+0

Es un placer haberlo ayudado. También he luchado con RestKit, así que sé cómo es. –

+0

El ejemplo de código al que se hace referencia en github/rodchile no está del todo completo y usa una clase RKClientOAuth que no veo en [0.2x docs] (http://cocoadocs.org/docsets/RestKit/0.20.3/). La página wiki referenciada hace referencia y esboza una solución completa. –

0

Después de estar harto de clientes y API excesivamente sofisticados, decidí hacerlo yo mismo y usar un cliente HTTP.

Con RubyMotion y BubbleWrap he logrado usar Credenciales de contraseña del propietario del recurso con una API.

params = { 
    "grant_type" => "password", 
    "username" => "<USERNAME>", 
    "password" => "<PASSWORD>", 
    "client_id" => "<SOMETHING>", 
    "client_secret" => "<SOMETHING>", 
    "scope" => "public write" 
} 

BW::HTTP.post("https://example.com/oauth/token", 
       :payload => params, 
       :headers => {}) do |response| 

    if response.ok? 
    # Do something 
    end 
end 
Cuestiones relacionadas