web-dev-qa-db-ja.com

Apple(iOSアプリ+バックエンド検証))APIでサインインすると、エラー「invalid_client」が返されます

IOSアプリとバックエンドでAppleでサインインを実装しようとしています。目標はこれです:

  1. ユーザーがiOSアプリにサインインする
  2. 肯定的な応答の後、アプリはバックエンドのエンドポイントを呼び出し、authorizationCodeを渡します
  3. バックエンドはAppleのサーバーへの別の呼び出しでauthorizationCodeを検証する必要があります。

ここで私は混乱しています。この呼び出しを行うには、バックエンドが一連のパラメーターを提供する必要があります。

[〜#〜] url [〜#〜]

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

クエリパラメータ

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

client_secretJWTを生成しました:

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"

昨日、Dev Portalで2つのアプリ(AとB)の2つのキーを作成し、それを使用してシークレットを生成しました。今日はアプリAが機能し、肯定的な応答が得られました。

肯定的な応答

{
    "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はまだ機能しません。今日、私はAのキーを取り消して新しいキーを作成しましたが、Devポータルで削除したにもかかわらず、新しいキーでは機能しなくなりましたが、古いキーでは機能しません。私は困惑している。

応答エラー

{
    "error": "invalid_client"
}

Appleはインデックス作成などに時間がかかるのでしょうか。これがどのように機能するのかを理解したいだけです。

7

ネイティブAPP IDは、コンマで区切られた、チームIDが前に付いたバンドルIDです。

「AppleアプリIDは、1つ以上のアプリを識別するために使用される2つの部分からなる文字列です。具体的には、AppleアプリIDは、チームIDとバンドルIDを結合したものです example のピリオド付き:1A234H7ABC.com.yourdomain.YourApp。」

しかし、これを機能させるために同じ問題が発生しています。

0