SFSafariViewController
を使用した古い OAuth フローからiOS 11 の を使用した新しいフローにアプリを切り替える予定ですSFAuthenticationSession
。ログインは問題ではありません。新しい API への移行を実装するのに数分かかりました。ただし、ログアウトすると困惑します。
どのように?
ドキュメントのどこにでもログアウトのオプションを提供したいという言及は見つかりません。古いものを使用しSFSafariViewController
て Cookie を無効にしますか? いいえ、それらは と共有されなくなりましたSFAuthenticationSession
。認証セッションを再開するとすぐに、ユーザーは自動的にログインし、抜け出せなくなります。では、ログアウトを有効にする方法は? それとも、完全に明らかな何かを見落としているだけですか?
更新: 技術的な意味で「機能する方法」を見つけましたが、ユーザーにとってはばかげています: Cookie をクリアするログアウト ページで新しい SFAuthenticationSession を開きます。ただし、これは、アラート ビューをログアウトするときに、ユーザーがサービス経由でログインするかどうかを再度尋ねることを意味します。「はい」が選択されている場合(「ログイン」)、Cookie クリア ログアウト ページが開かれ、ユーザーはビューを手動で閉じる必要があります。これは完了ハンドラーによってキャッチされる可能性があり、ログイン ビューを再度開くことができることがわかります。ログアウトするためのログインプロンプト?私は本当にこの解決策が好きではありません。
何か案は?私はまだ完全に明白な解決策を見落としていますか?
更新 2: これまでのところ、この問題について何の手がかりも得られていないため、これはおそらく簡単なことではありません。私は Apple のレポート ツールを介して提案を提出し、これを処理する方法を明確にするか、利用できない場合は API に組み込むようにしました。回答が得られたら投稿します。
更新 3: この問題をもう少し検討した結果、OAuth プロバイダーのログイン ページに影響を与えることができる場合、別の (魅力的ではありませんが) 解決策が見つかりました。それは、Cookie の寿命を非常に短くすることです。その後、自動ログインなしでログインページを開くことができます。ただし、これにより、アプリ間でログインセッションを共有するという目的全体が失われます..ログインページに影響を与えることができる必要があります.
更新 4: iOS 12SFAuthenticationSession
は廃止され、 に置き換えられたためASWebAuthenticationSession
。ただしASWebAuthenticationSession
、ログアウトに関しては何も変更しません。それはまだ不可能です。前と同じ問題。