18

カスタムの Web ベースのソーシャル ネットワーク アプリ用のネイティブ モバイル アプリを開発しています。grant_type=passwordWeb サーバーと通信するための REST API を構築しており、認証方法 (フロー)として OAuth2 を選択しました。

Web アプリを使用すると、ユーザーは外部サービス (Facebook や Twitter) を使用してログインおよびサインアップできます。モバイルアプリでも同じことを許可する必要があります。問題は、どうすればそれができるかということです。

ピンタレスト モバイル アプリは状況を管理できます (添付の画像を参照)。ここで使用されているフローは何ですか?

Pinterest ログイン ビュー

それらは、従来の OAuth を利用したアプリ (Facebook API で直接 OAuth クライアントとして機能するモバイル アプリ) のように動作しますか? もしそうなら、どのようにしてモバイルアプリを Pinterest サーバーで認証できますか? Facebook OAuth アクセス トークンを資格情報として渡していますか?

問題のグラフィカルな表現 (- の????付いた矢印を参照):

Website API                 Mobile app                    Facebook OAuth

  +                           +                               +
  |                           |                               |
  |                           |       /oauth2/token           |
  |                           +------------------------------>|
  |                           |                               |
  |                           |       OAuth Access Token      |
  |                           |<-----------------------------+|
  |                           |                               |
  |           ????            |                               |
  |- - - - - - - - - - - - - -|                               |
  |                           |                               |
  |                           |                               |
  |    OAuth Access Token     |                               |
  |+------------------------->|                               |
  |                           |                               |
  |                           |                               |
  |   API Usage (w/ token)    |                               |
  |+------------------------->|                               |
  |<-------------------------+|                               |
  |                           |                               |
  |+------------------------->|                               |
  |<-------------------------+|                               |
  |                           |                               |
  |           ...             |                               |
  +                           +                               +

更新: この質問は私のものと非常に似ています.これが正しい道である場合、2 番目と 3 番目のステップ (カスタム API への Facebook トークンの送信と、トークン自体の検証) を行うことはできません。追加の OAuth2 グラント タイプ (つまりfacebook_token)?

4

4 に答える 4

4

先ほど取得した fb アクセス トークンをモバイル デバイスで使用してみてください。(他のプロバイダーでもかまいません)。サーバーにログイン/登録/両方の Web サービスに送信します。サーバー側では、fb sdk とアクセス トークンを使用してユーザーを確認し、ユーザーにログインして Cookie/セッションを送信できます。

于 2012-10-16T18:26:16.547 に答える
2

私は iOS 開発者ではありませんが、現在、オープンソースの DotNetOpenAuth ライブラリを使用して、.NET 環境で同様のワークフローを開発しています。見てみると参考になるかもしれません。

まず、認証方法は、サポートするプロバイダーによって異なります。

明確になるかもしれないいくつかの読み物:
http://softwareas.com/oauth-openid-youre-barking-up-the-wrong-tree-if-you-think-theyre-the-same-thing http://openid. net/get-an-openid/what-is-openid/
http://blog.bobcravens.com/2010/08/openid-and-oauth-using-dotnetopenauth-in-asp-net-mvc/ http:// stackoverflow.com/questions/7996124/how-to-authorize-mobile-apps-with-a-third-party-by-oauth-but-connect-to-my-servi

一般的な認証ワークフロー:
1. Web アプリケーションは、ユーザーがさまざまな OpenID/OAuth プロバイダーから選択できる領域を提示することから始まります。
2. アプリケーションがプロバイダーのサーバーにリダイレクトされます (投稿データにいくつかのアプリケーション情報を追加した後、詳細については、特定のプロバイダーの API リファレンスを参照してください)。OpenID と OAuth はどちらも、一連のリダイレクトを使用してユーザーを認証します。重要なのは、認証がプロバイダのサイトで行われ、そこにパスワードが保存されていることです。
3. ユーザーが選択したプロバイダーにログインすると、(コールバック URL メカニズムを介して) サイトへの新しいリダイレクトが発生します。
4. このリダイレクトには、OpenID / OAuth プロバイダーによって提供される認証済みユーザーに関する情報が含まれます。少なくとも、リダイレクトは「ユーザー名」をアプリケーションに返します。
5. この情報を使用して、認証されたユーザーがサイトに入ることができるかどうかを確認します。

于 2012-07-04T18:25:29.007 に答える
1

ステファノ

これには StackMob を使用します。それは非常にうまく機能し、実装が非常に簡単です。

StackMob SDK は、Facebook と Twitter を介して OAUTH2 セキュリティと認証を提供します。

更新: 2014 年 5 月現在、StackMob は存在しません

于 2012-08-30T19:48:10.100 に答える
0

ソーシャル ログイン プロバイダー用に異なる OAuth クライアント ID を作成します。

例:

Facebook -- クライアント ID #1 Twitter -- クライアント ID #2


ソーシャル フローのパブリック ルートを作成します。

例:

http://www.test.com/auth/facebook/ http://www.test.com/auth/facebook/callback/

ソーシャル プロバイダーのコールバックが成功したら、問題のユーザーのデータをデータストアからプログラムで取得し、問題のクライアント IDに付与する定義済みのスコープでアクセス トークンを生成する必要があります。


API の使用を試みることで、サード パーティが自社の顧客と直接やり取りしようとしている場合は、2 段階のプロセスが必要になります。

まず、顧客 (顧客) は、前述のようにソーシャル ログイン プロセスを実行する必要があります。

次に、ソーシャル プロバイダーのコールバックが成功したら、顧客にインターフェイス (おそらく Web ベース) を表示して、サード パーティが要求する権利の範囲を受け入れる/拒否できるようにする必要があります。最初のソーシャル ログイン ビットでは、ソーシャル プロバイダーのコールバック ステップで long を渡すために、明らかに long を渡すか、サード パーティから要求されているスコープを格納する必要があります。

于 2015-01-02T07:08:17.850 に答える