web-dev-qa-db-fra.com

Connectez-vous avec Apple (application iOS + vérification du backend)) L'API renvoie l'erreur "invalid_client"

J'essaie d'implémenter Connectez-vous avec Apple avec une application iOS et un backend. Le but est le suivant:

  1. L'utilisateur se connecte sur l'application iOS
  2. Après une réponse positive, l'application appelle un point de terminaison sur le backend et remet le authorizationCode
  3. Le backend doit maintenant vérifier le authorizationCode avec un autre appel au serveur d'Apple.

Ici, je suis confus. Pour effectuer cet appel, le backend doit fournir un tas de paramètres:

URL

https://appleid.Apple.com/auth/token

Paramètres de requête

client_id     = com.mycompany.appname
client_secret = ...
code          = ... // `authorizationCode` from the signin in the iOS app
grant_type    = authorization_code

J'ai généré un JWT pour le client_secret:

Propriétés JWT

header:
    kid: <key id, created on Apple Dev Portal>
claims:
    iss: <team id>
    iat: <current timestamp>
    exp: <current timestamp + 180 days>
    aud: "https://appleid.Apple.com"
    sub: "com.mycompany.appname"

Hier, j'ai créé deux clés pour deux applications (A et B) sur le portail de développement, je l'ai utilisé pour générer des secrets et aujourd'hui l'application A a fonctionné et j'ai une réponse positive:

Réponse positive

{
    "access_token" : "a1e64327924yt49f5937d643e25a48b81.0.mxwz.GN9TjJIJ5_4dR6WjbZoVNw",
    "token_type" : "Bearer", 
    "expires_in" : 3600, 
    "refresh_token" : "rca76d9ebta644fde9edba269c61eeb41.0.mxwz.sMDUlXnnLLUOu2z0WlABoQ", 
    "id_token" : "eyJraWQiOiJBSURPUEsxIcccYWxnIjoiUlMyNTYifQ.eyJpc3MiOiJodHRwczovL2FwcGxlaWQuYXBwbGUuY29tIiwiYXVkIjoiZGUudHJ1ZmZscy5hcHBsZS1zaWduaW4tdGVzdCIsImV4cCI6MTU2NzcwMDI0MiwiaWF0IjoxNTY3Njk5NjQyLCJzdWaaaiIwMDA3NjkuYWY3NDdjMTlmZGRmNDJhNjhhYmFkZjhlNTQ1MmY3NjAuMjIwNSIsImF0X2hhc2giOiJrVThQTkZOUHYxS0RGUEtMT2hIY213IiwiYXV0aF90aW1lIjoxNTY3Njk5NjM5fQ.g3JD2MDGZ6wiVS9VMHpj24ER0XqJlunatmqpE7sRarMkhMHMTk7j8gty1lpqVBC6Z8L5CZuewdzLuJ5Odrd3_c1cX7gparTQE4jCyvyTACCPKHXReTC2hGRIEnAogcxv6HDWrtZgb3ENhoGhZW778d70DUdd-e4KKiAvzLOse-endHr51PaR1gv-cHPcwnm3NQZ144I-xhpU5TD9VQJ9IgLQvZGZ8fi8SOcu6rrk5ZOr0mpt0NbJNGYgH5-8iuSxo18QBWZDXoEGNsa4kS5GDkq5Cekxt7JsJFc_L1Np94giXhpbYHqhcO1pZSGFrJVaMvMMftZfuS_T3sh2yCqkcA"
}

B, cependant, ne fonctionne toujours pas. Aujourd'hui, j'ai révoqué la clé de A et j'en ai créé une nouvelle et maintenant elle ne fonctionne plus avec la nouvelle, mais toujours avec l'ancienne, même si je l'ai supprimée sur le portail de développement. Je suis tellement confus.

Erreur de réponse:

{
    "error": "invalid_client"
}

Je me demande si Apple a besoin d'indexation de temps ou quelque chose comme ça. Je veux juste comprendre comment cela fonctionne.

7
Lukas Würzburger

Votre ID d'application natif est votre ID de bundle préfixé avec votre ID d'équipe, séparé par une virgule.

"L'ID d'application Apple est une chaîne en deux parties utilisée pour identifier une ou plusieurs applications. Plus précisément, l'ID d'application Apple est votre ID d'équipe et ID de bundle joints) avec un point, pour exemple : 1A234H7ABC.com.votredomaine.VotreApp. "

J'ai cependant le même problème pour que cela fonctionne.

0
Nicholas Mordecai