Bonjour,
Je suis actuellement sur un projet d’app sur WatchOS utilisant un web service. Il s’agit d’une app indépendante.
L’idée est de pouvoir utiliser cette API pour récupérer un certain nombre d’informations. La documentation de l’API demande une identification par protocole OAuth 2.
J’ai donc pu trouver dans la documentation d’xCode des informations à ce sujet mais j’avoue ne pas tout bien saisir.
J’ai réussi à créer un lien vers la page internet d’identification grâce à ASWebAuthenticationService. Lorsque je clique dessus, un fenêtre apparait alors et affiche la page d’identification du web service. Je peux y saisir mes identifiants (et même utiliser le trousseau iCloud) et lorsque je valide je reçois bien un mail pour me dire que je suis connecté depuis la montre.
Seulement sur mon app, la fenêtre se rafraichit et les champs apparaissent de nouveau vide. Je ne parviens pas à attraper les informations renvoyées pour obtenir le token.
Est-ce que certains d’entre vous ont déjà utilisé authentication services ? Auriez vous des pistes et encore mieux, des liens explicatifs pour utiliser Authentication services avec OAuth ?
Bonjour Christophe,
malheureusement je n’ai jamais utilisé ce type d’authentification web mais je pense que tu dois trouver un moyen de récupérer ce token car sans lui le serveur ne te reconnaîtra pas.
Si tu reçois l’email confirmant ta connexion c’est que le token a bien été généré donc il faut juste trouver le moyen de le récupérer pour tes prochaines requêtes
Bonjour Maxime,
C’est bien là mon problème, je n’arrive pas à le récupérer. J’espérai trouver quelqu’un ayant déjà utilisé ce type d’authentification.
Je vais creuser encore. Mais j’avoue coincer sur ce point.
Selon la doc officielle et notamment ce guide : Authenticating a User Through a Web Service | Apple Developer Documentation
Tu as une closure à fournir à ton objet ASWebAuthenticationService
et cette closure te sert de callback lorsque le site OAuth cherche à te donner ton token.
Généralement le token est un paramètre contenu dans l’URL de redirection.
Et d’ailleurs, dans la doc ils te donnent un exemple de code pour ce callback :
guard error == nil, let callbackURL = callbackURL else { return }
// The callback URL format depends on the provider. For this example:
// exampleauth://auth?token=1234
let queryItems = URLComponents(string: callbackURL.absoluteString)?.queryItems
let token = queryItems?.filter({ $0.name == "token" }).first?.value
Dans cet exemple ils imaginent que le token est un paramètre d’URL (queryItem) qui s’appellerai token, quelque chose comme ça : https://www.url-de-redirection.com/authenticated?token=ABC-123-DEF et ton token extrait serait ABC-123-DEF
Ce que tu dois faire avec ce token, est de l’enregistrer en local et de considérer ton utilisateur comme connecté.
Puis pour chaque requete au webservice en question, tu vas réutiliser ce token. Ca dépend du webservice mais généralement c’est sous la forme d’un entête http :
Authorization: Bearer ABC-123-DEF
Merci Maxime d’avoir étudier la doc. Je vais regarder ça de plus près.
Je croise les doigts pour m’en sortir. 
1 « J'aime »