appauth - Integración OAuth 2.0 en iOS
authentication oauth-2.0 (5)
He estado intentando desde hace años para obtener la integración de OAuth 2.0 en mi aplicación de iPhone.
He buscado y buscado bibliotecas, tutoriales, etc. Pero todos me han llevado a un callejón sin salida. El problema principal que tengo es que o tienen un código obsoleto, o simplemente no funcionan o tienen cierta documentación, pero es realmente difícil de seguir (para mí de todos modos ...).
La mejor biblioteca de OAuth2 que pude encontrar para Xcode es esta: https://github.com/nxtbgthng/OAuth2Client
Pero el principal problema con eso es que no parece hacer nada ... He seguido toda la documentación y las instrucciones que vinieron con él, pero después de compilarlo y ejecutarlo, parece que no se autentica ...
Así que supongo que mi pregunta principal es: ¿alguien sabe de algún tutorial bueno y actualizado de OAuth 2.0 para Xcode o de alguna biblioteca para tal cosa?
Porque realmente estoy luchando en este momento ... :(
Gracias por tu tiempo, Dan.
ACTUALIZACIÓN 2: Aquí está mi código (Identificación de aplicación y secreto eliminado por seguridad):
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
oauthClient = [[LROAuth2Client alloc]
initWithClientID:@"MY_CLIENT_ID"
secret:@"MY_APP_SECRET"
redirectURL:[NSURL URLWithString:@"app://instagram-callback/?code="]];
oauthClient.delegate = self;
oauthClient.userURL = [NSURL URLWithString:@"https://api.instagram.com/oauth/authorize/?client_id=ab6dc96859bf43b3a488199ec72d9964&redirect_uri=app://instagram-callback/?code=&response_type=code"];
oauthClient.tokenURL = [NSURL URLWithString:@"https://api.instagram.com/oauth/access_token/"];
[oauthClient authorizeUsingWebView:myWebView];
}
- (void)oauthClientDidReceiveAccessToken:(LROAuth2Client *)client;
{
LROAuth2AccessToken *token = client.accessToken;
[NSKeyedArchiver archiveRootObject:token toFile:@"Path/To/MyAccessToken"];
}
- (void)checkAccessTokenForExpiry:(LROAuth2AccessToken *)accessToken;
{
if ([accessToken hasExpired]) {
[oauthClient refreshAccessToken:accessToken];
}
}
- (void)oauthClientDidRefreshAccessToken:(LROAuth2Client *)client;
{
LROAuth2AccessToken *token = client.accessToken;
[NSKeyedArchiver archiveRootObject:token toFile:@"Path/To/MyAccessToken"];
}
Consulte esto para usar la API de Instagram: https://github.com/shyambhat/InstagramKit . En los comentarios, veo que está teniendo problemas con la redirección. Mire en el URI de redirección de Xcode para obtener ayuda con eso: ¿Qué es un URI de redirección? ¿Cómo se aplica a la aplicación iOS para OAuth2.0?
En casi todos los proyectos he usado AFNetworking porque es muy poderoso, por qué reinventar la rueda cada vez :)
Además, también tiene un OAuth2Manager que es bastante fácil de implementar y funciona de forma sólida.
En la documentación de Instagram dice que hay dos maneras de autenticarse. Una explícita (para la autenticación del lado del servidor) y otra implícita, para la autenticación en un cliente (sin servidor).
Está utilizando el Explícito dentro de la aplicación, intente cambiar el userURL
a https://instagram.com/oauth/authorize/?client_id=CLIENT-ID&redirect_uri=REDIRECT-URI&response_type=token
y tokenURL
a http://your-redirect-uri#access_token=ACCESS-TOKEN
.
Lo más probable es que no pueda usar un secreto de cliente en una aplicación de iPhone (porque el secreto del cliente no puede protegerse), necesitará autenticarse a través de la aplicación móvil de servicios o sitio web móvil y luego manejar la url de redirección, según este enlace que encontré en el sitio del desarrollador de api de Uber: http://aaronparecki.com/articles/2012/07/29/1/oauth2-simplified
Hay un código en esta página para hacer precisamente eso, que estoy probando ahora: https://medium.com/swift-programming/learn-nsurlsession-using-swift-ebd80205f87c
También hay buena información en la parte inferior de esta página: http://www.idmworks.com/blog/entry/getting-started-with-oauth2client-on-ios
Recientemente, he creado un pod simple https://github.com/kohtenko/KOSocialOAuth .
Puedes conectar fácilmente Instagram
, VK
o LinkedIn
. Siéntase libre de enviar Pull Request con cualquier otro punto final OAuth.