問題タブ [aswebauthenticationsession]
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.
ios - ASWebAuthenticationSession は、警告ダイアログを変更する方法を提供しません
iOS アプリケーションでいくつかの異なる認証メカニズムを実装しようとしています。重要なのは、iOS アプリケーションが App Store 経由で配布され、接続先のサーバーがオープン ソースであることです。このため、お客様は独自のサーバーをセットアップする必要があります。これは、RocketChat アプリケーションが機能するのと同じように機能します。サーバーをセットアップするとき、ユーザーは使用する認証プロバイダーを定義できます。すべての認証データ、クライアント ID、シークレットなどはサーバー側に保存されます。サーバー アプリケーションは、passportjs を使用してさまざまな認証戦略をサポートします。これは、oauth のようなことがサーバー経由で行われ、oauth コールバックがサーバーの URL にヒットすることを意味します。そこから、サーバーは、アプリで承認/アクセスが制御される認証後に、ユーザーを作成/ローカル アカウントにマップできます。
たとえば、oauth を実行する場合、URL は次のようになります。
そこから、passportjs は認証のために Google にリダイレクトします。
問題について言えば、その認証を開始するには、iOS で何かを起動する必要があります。この場合、ASWebAuthenticationSessionを使用するのが正しいようです。ただし、ASWebAuthenticationSession を使用すると、最初の「customserver.com」を示す警告ダイアログが表示されます。
[アプリ] は「customserver.com」でログインしようとしています。これにより、アプリとウェブサイトがあなたに関する情報を共有できるようになります
これは事実ですが、サーバー (passportjs を使用) は認証プロバイダーのサイトにリダイレクトします。この場合、たとえば google oauth を使用してみましょう。これは、このモーダル警告が非常に紛らわしいことを意味します。実際には、passportjs が google (または他の) 認証プロバイダーにリダイレクトしているときに、customserver.com が認証プロバイダーであると述べています。
ASWebAuthenticationSession はこのフローを非常に簡単にしますが、Google への最初のリダイレクトを監視せず、おそらく監視できないという事実は、ユーザーを混乱させます。これで、SFSafariViewController を使用して、リダイレクト スキームに一致するようにアプリにディープ リンクを作成することも検討しました。ASWebAuthenticationSession ほどクリーンではありませんが、ユーザーに警告するモーダル ダイアログがないため、これは機能します。必要に応じて、正しい認証サイトをユーザーに警告する独自のカスタム モーダル ダイアログを作成することもできます。
これは、いくつかの質問につながります。
ASWebAuthenticationSession を使用するときにユーザーに表示されるメッセージを回避またはカスタマイズする方法はありますか?
#1 に対する答えが「いいえ」であると仮定すると、メッセージを回避するために SFSafariViewController を使用することは受け入れられる解決策ですか?