web-dev-qa-db-fra.com

OAuth 2.0 intégration dans iOS

J'essaie depuis des siècles maintenant d'obtenir l'intégration OAuth 2.0 dans mon application iPhone.

J'ai cherché et cherché des bibliothèques, des tutoriels, etc ... Mais ils m'ont tous conduit à une impasse. Le principal problème que j'ai, c'est qu'ils ont du code obsolète, ou qu'ils ne fonctionnent tout simplement pas ou qu'ils ont de la documentation mais c'est vraiment difficile à suivre (pour moi en tout cas ...).

La meilleure bibliothèque OAuth2 que j'ai pu trouver pour Xcode est celle-ci: https://github.com/nxtbgthng/OAuth2Client

Mais le principal problème avec celui-ci est qu'il ne semble rien faire ... J'ai suivi toute la documentation et les instructions qui l'accompagnaient, mais après sa construction et son exécution, il ne semble pas s'authentifier ....

Donc, je suppose que ma question principale est: quelqu'un connaît-il des tutoriels bons et à jour OAuth 2.0 pour Xcode ou des bibliothèques pour une telle chose?

Parce que j'ai vraiment du mal en ce moment .... :(

Merci pour votre temps, Dan.

MISE À JOUR 2: Voici mon code (identifiant d'application et secret supprimés pour des raisons de sécurité):

- (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"];
}
27
Supertecnoboff

Dans presque tous les projets que j'ai utilisés AFNetworking parce que c'est très puissant - pourquoi réinventer la roue à chaque fois :)

En outre, il a également un OAuth2Manager qui est assez facile à implémenter et fonctionne comme un roc.

5
dOM

J'ai récemment créé un pod simple https://github.com/kohtenko/KOSocialOAuth .

Vous pouvez facilement connecter Instagram, VK ou LinkedIn. N'hésitez pas à envoyer une demande d'extraction avec tout autre point de terminaison OAuth.

0
Oleg Kohtenko

Dans documentation Instagram dit qu'il y a deux façons de s'authentifier. Un explicite (pour l'authentification côté serveur) et un implicite, pour l'authentification dans un client (sans serveur).

Vous utilisez celui explicite dans l'application, essayez de changer le userURL en https://instagram.com/oauth/authorize/?client_id=CLIENT-ID&redirect_uri=REDIRECT-URI&response_type=token et les tokenURL à http://your-redirect-uri#access_token=ACCESS-TOKEN.

0
aramusss

Vérifiez cela pour utiliser l'API Instagram: https://github.com/shyambhat/InstagramKit . Dans les commentaires, je vois que vous rencontrez des problèmes avec la redirection - consultez les URI de redirection de Xcode pour obtenir de l'aide: Qu'est-ce qu'un URI de redirection? Comment s'applique-t-il à l'application iOS pour OAuth2.0?

0
DHShah01

Vous ne pouvez probablement pas utiliser un secret client dans une application iPhone (car le secret client ne peut pas être protégé), vous devrez vous authentifier via l'application mobile des services ou le site Web mobile, puis gérer l'URL de redirection, selon ce lien que j'ai trouvé sur le site du développeur Uber api: http://aaronparecki.com/articles/2012/07/29/1/oauth2-simplified

Il y a du code sur cette page pour faire exactement cela, que je teste maintenant: https://medium.com/Swift-programming/learn-nsurlsession-using-Swift-ebd80205f87c

Il y a aussi de bonnes informations sur la partie inférieure de cette page: http://www.idmworks.com/blog/entry/getting-started-with-oauth2client-on-ios

0
Roger Perkins