2

私はかなり長い間 ServiceStack を使用してきましたが、とても気に入っています。しかし、私が理解できないことが1つあります。Facebook エンドポイント「/auth/facebook」を使用すると仮定して、サービススタック エンドポイントを使用しているアプリ (ios、android など) はどのようになっていますか? ブラウザからこの URL "/auth/facebook" を使用すると正常に動作しますが、応答は html であり、シリアライズ可能な AuthResponse ではありません。

このエンドポイントは、同じソリューションで servicestack を使用する Web サイトからのみ使用できますか?

4

1 に答える 1

2

その仕組みは、アプリに一致する API キーを使用してユーザーを Facebook にリダイレクトすることです。次に、ユーザーは Facebook にアプリに問題がないことを伝え、Facebook はユーザーをリダイレクトします。これは、ブラウザ経由でのみ実行できます。これを回避するには、実際には 2 つのオプションがあります。

  • Web サイトを使用してユーザーを Facebook で認証し、アプリからの資格情報でユーザーを認証します。

  • 組み込みの iOS Facebook 機能を使用して、結果の認証トークンをアプリのエンドポイントに送信し、後で使用するために保存できます。

編集、もう少し明確に:

オプション1

  1. ユーザーがあなたのウェブサイトにアクセスします
  2. ユーザーが Auth With Facebook ボタンをクリックする
  3. ユーザーには、Service Stack で設定された Facebook エンドポイントが送信されます
  4. ユーザーはサービス スタックによって Facebook にリダイレクトされます
  5. ユーザーは Facebook からサービス スタックにリダイレクトされ、URL にトークンが含まれます。
  6. トークンをデータベースに保存し、Facebook でアプリを使用できるようになったことをユーザーに伝えます。

オプション 1.5

オプション 1と同じですが、ユーザーにブラウザーを通過させる代わりに、UIWebViewコントロールを作成して Facebook Auth エンドポイントをポイントします。次に、ユーザーが認証されたことを示すサイトからの応答をリッスンします。私は客観的な c ではないので、それを行う方法について詳しく説明することはできません。

オプション 2

  1. iOS Facebook API を使用して、ここに示すように認証を処理します
  2. POSTカスタム エンドポイントを介した Service Stack への資格情報
  3. 資格情報をデータベースに保存し、将来それらを使用してユーザーに代わって呼び出しを行います。

Facebook ログインには何らかのブラウザが必要です。これは、Facebook の Cookie をウェブサイトの承認リクエストと共に渡す必要があるためです。これにより、Facebook は、どのユーザーがあなたのサイトを承認したいのか、そしてそのユーザーがリクエストを行っているのかを知ることができます。

于 2013-05-13T14:50:46.013 に答える