我々はCognitoへの非認証アクセスを使用していたiOSアプリケーションに取り組んでいます。アイデンティティプロバイダ:Cognito User Poolsが追加されました。複数のデバイスとiOSのAWS Cognito認証
我々は同じ(予想通り)、デバイスAが認証への認証されていないからログインプロセスを、ない場合には、Cognito IDはとどまることを見ています。その後、デバイスBがログインすると、Unauthenticated to Authenticatedと表示されます。ユーザーはデバイスAから認証済みのCognito IDを取得することが期待されますが、そうではありません。
はそうであっても、おそらく彼らはすべてのデバイスAからCognito IDに移行しましたか?それはまた、そうではないようです。どちらのデバイスも個別のCognito IDを持っていますが、Cognito User Poolsの同じユーザーアカウントを使用しています。しかしどちらも、Cognito IDを共有していない。
誰かが、我々は有効なワークフローで何をしているか、そしておそらく私たちは間違っているかもしれないものを確認することはできますか?
当社は、ユーザーにそのデータを結びつけるために、バックエンドサーバーにCognito IDを格納しているが、Cognito IDのが突然変化すると、そのハードは良い解決策を思い付きます。
感謝を助けるかもしれない、我々はまだ私たちの実装でバリケードをヒットしている、私たちも、比較するために、あなたのgithubの上のプロジェクトの例をクローニングし、実装が非常に接近しています。 – Trihedron
ログイン中に表示される主な問題は、getSessionがトークンを返さないことです。 userPoolUser(AWSCognitoIdentityUser).isLoggedInは、getSession continueブロックの内部では常にfalseであり、credentialsメソッド内にあります。ユーザーをログインする必要があるようです。getSessionに間違ったパスワードを指定しても、成功したユーザー/パスワードとまったく同じではないかのように完了ブロックを呼び出すことができます。 – Trihedron
interactiveAuthenticationDelegateを使用している場合、didCompletePasswordAuthenticationStepWithErrorデリゲートメソッドが成功と失敗の両方で呼び出されます。オプションのパラメータ "error"は、成功の場合はnilです。 ...または多分uidとパスワードでgetSessionをやっているだけかもしれません。関係なく、あなたは資格情報プロバイダが正しくプールにフックアップされており、AWSCognitoCredentialsProviderと資格情報プロバイダを作成するときにそれが行われている... identityProviderManagerとしてPOOL_IDとあなたのuserpool(プール)を指定することを確認する必要があります。こうすることで、pool.loginsが呼び出されます。 – Bruce0