問題タブ [sfauthenticationsession]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1588 参照

ios - SFAuthenticationSession プロンプトを表示する前に、利用可能な Cookie があるかどうかを知る方法はありますか

iOS 11 で、Apple は Web とモバイル アプリの間で認証データを共有する新しい方法を導入しましたSFAuthenticationSession

SFAuthenticationSessionすべての新規ユーザー (私の Web サイトを使用したことがない可能性があります) にプロンプ​​トを表示して同意してもらい、その後何も得られずにログインするように求めるのは、ユーザー エクスペリエンスとしては不適切です。

Apple側のドキュメントはかなり空っぽです。これは私が見つけた唯一の例です。

プロンプトを表示する前に利用可能な Cookie があるかどうかを知る方法はありますか? SFAuthenticationSessionまたは、Associated Domains有効にすると、ドメインで認証するときに、システムがプロンプトを表示しないようにする必要がありますか?

0 投票する
5 に答える
14261 参照

ios - SFAuthenticationSession/ASWebAuthenticationSession とログアウト

SFSafariViewControllerを使用した古い OAuth フローからiOS 11 の を使用した新しいフローにアプリを切り替える予定ですSFAuthenticationSession。ログインは問題ではありません。新しい API への移行を実装するのに数分かかりました。ただし、ログアウトすると困惑します。

どのように?

ドキュメントのどこにでもログアウトのオプションを提供したいという言及は見つかりません。古いものを使用しSFSafariViewControllerて Cookie を無効にしますか? いいえ、それらは と共有されなくなりましたSFAuthenticationSession。認証セッションを再開するとすぐに、ユーザーは自動的にログインし、抜け出せなくなります。では、ログアウトを有効にする方法は? それとも、完全に明らかな何かを見落としているだけですか?

更新: 技術的な意味で「機能する方法」を見つけましたが、ユーザーにとってはばかげています: Cookie をクリアするログアウト ページで新しい SFAuthenticationSession を開きます。ただし、これは、アラート ビューをログアウトするときに、ユーザーがサービス経由でログインするかどうかを再度尋ねることを意味します。「はい」が選択されている場合(「ログイン」)、Cookie クリア ログアウト ページが開かれ、ユーザーはビューを手動で閉じる必要があります。これは完了ハンドラーによってキャッチされる可能性があり、ログイン ビューを再度開くことができることがわかります。ログアウトするためのログインプロンプト?私は本当にこの解決策が好きではありません。

何か案は?私はまだ完全に明白な解決策を見落としていますか?

更新 2: これまでのところ、この問題について何の手がかりも得られていないため、これはおそらく簡単なことではありません。私は Apple のレポート ツールを介して提案を提出し、これを処理する方法を明確にするか、利用できない場合は API に組み込むようにしました。回答が得られたら投稿します。

更新 3: この問題をもう少し検討した結果、OAuth プロバイダーのログイン ページに影響を与えることができる場合、別の (魅力的ではありませんが) 解決策が見つかりました。それは、Cookie の寿命を非常に短くすることです。その後、自動ログインなしでログインページを開くことができます。ただし、これにより、アプリ間でログインセッションを共有するという目的全体が失われます..ログインページに影響を与えることができる必要があります.

更新 4: iOS 12SFAuthenticationSessionは廃止され、 に置き換えられたためASWebAuthenticationSession。ただしASWebAuthenticationSession、ログアウトに関しては何も変更しません。それはまだ不可能です。前と同じ問題。

0 投票する
0 に答える
1085 参照

oauth - リダイレクトする iOS 11 AppAuth 処理リダイレクト URI

iOS アプリ、特に iOS 11 で Google OAuth 認証にAppAuth (v 0.90.0)を使用すると、次のようになります。

  1. リダイレクト URI を使用して、iOS クライアントで Google 認証を開始しますhttp://myproduct.com/oauth-redirect。クライアント ID は Web アプリケーションの ID であるため、カスタム URL を指定できません。
  2. AppAuth がクライアントで SFAuthenticationSession を開始すると、サインインを許可するよう求められます。[続行] を選択します。( https://github.com/openid/AppAuth-iOS/blob/0.90.0/Source/iOS/OIDAuthorizationUICoordinatorIOS.m#L91-L95 )
  3. http://myproduct.com/oauth-redirectはカスタム URLmyproduct://authにリダイレクトし、SFAuthenticationSession 完了ブロックは のコールバック URL で実行されますmyproduct://auth
  4. AppAuth が認証フローを再開すると、元の URL が前のステップのコールバック URL と同じかどうかがチェックされます: https://github.com/openid/AppAuth-iOS/blob/0.90.0/Source/OIDAuthorizationService.m #L108-L110
  5. http://myproduct.com/oauth-redirectとが違うのでmyproduct://auth、流れが止まります。

サーバー側でトークン交換を実行できるように、Web アプリの clientID を使用していることに注意してください。

resumeAuthorizationFlowWithURL以前の AppAuth バージョンでは、更新された URL で直接呼び出すことができたので、これが可能でした。

AppAuth を更新せずにこのユース ケースをサポートする方法はありますか?