2012-07-04 23 views
18

私はカスタムのウェブベースのソーシャルネットワークアプリのネイティブモバイルアプリを開発しています。 Webサーバーと通信するためのREST APIを構築しており、認証方法としてOAuth2を選択しました(grant_type=passwordフロー)。OAuth2「ソーシャルログイン」フロー(Facebook/Twitter経由のOAuth2認証を許可):例/文献はありますか?

web-appを使用すると、ユーザーは外部サービス(FacebookやTwitterなど)を使用してログインしてサインアップできます。モバイルアプリでも同じことを許可する必要があります。問題は、どうしたらいいのでしょうか?

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

Pinterest Login View

彼らは、古典的な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) |        | 
    |+------------------------->|        | 
    |<-------------------------+|        | 
    |       |        | 
    |+------------------------->|        | 
    |<-------------------------+|        | 
    |       |        | 
    |   ...    |        | 
    +       +        + 

更新:鉱山にThis question is quite similar ..これは従うべき正しいパスである場合、第3 +第二工程(カスタムAPIへのFacebookトークンの送信、トークン自体の検証)は、追加のOAuth2認可タイプ(すなわち、facebook_token)ではありませんでしたか?

+0

すべてのAPIリクエストをプロキシし、URL、ヘッダー、リクエストパラメータを変更してはどうでしょうか? – makevoid

+0

それはどういう意味ですか? :) –

+0

こんにちは、まったく同じ問題に直面しています。あなたはそれを行うための実用的な解決策を見つけましたか?ありがとうございました –

答えて

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 /私のサービスに接続された第三者とのモバイルアプリケーションの使用方法

汎用認証ワークフロー:
1. Webアプリケーションは、プレゼンテーションユーザが様々なOpenID/OAuthプロバイダの中から選択することを可能にする領域。
2.アプリケーションはプロバイダーのサーバーにリダイレクトされます(できるだけポストデータにアプリケーション情報を追加した後、詳しくは、特定のプロバイダーのAPIリファレンスを参照してください)。 OpenIDとOAuthは、一連のリダイレクトを使用してユーザーを認証します。キーは、プロバイダのサイトで認証が行われ、パスワードが保存される場所です。
3.ユーザーが選択したプロバイダにログインすると、(コールバックURLメカニズムを介して)サイトへの新しいリダイレクトが発生します。
4.このリダイレクトには、OpenID/OAuthプロバイダによって提供される認証済みユーザーに関する情報が含まれます。少なくとも、リダイレクトはアプリケーションに「username」を返します。
5.この情報を使用して、認証されたユーザーがサイトにアクセスできるかどうかを確認します。

+1

Gianniありがとうございます。しかし、ここの問題は、FacebookでOAuthクライアントとして動作するWebアプリケーションではありません。それはすべて古典的で文書化されたものです。私の質問は、カスタムAPIを使用したいが、直接OAuth接続ではなくサードパーティのOAuthオーソライザ(Facebookなど)を通じて認証する必要のあるモバイルアプリに関する質問です。 –

1

ステファノ

我々はこのためStackMobを使用しています。これは非常にうまく動作し、実装が非常に簡単です。

StackMob SDKはFacebookやTwitter経由でOAUTH2セキュリティと認証を提供します。

更新StackMob no longer exists as of May 2014

+1

* OPがこのSDKをどのように使用することができるのか、なぜこれが彼の質問のどれにも*答えると思う理由を説明するのはあなたの一種でしょう。 –

+0

ええ、ありがとうradesix、私は彼らのAPI [Facebookを使ってユーザーを作成してログインするための呼び出しをサポートしています](https://stackmob.com/devcenter/docs/User-Authentication-API)を見ることができますが、 OAuth2。確かに、彼らはOAuth2プロトコルもサポートしているようですが、この特定の問題を解決することはできません。 –

+0

ステファノ、なぜこの問題が解決しないのか分かりません。 StackMobはあなたが要求しているようにOAUTH 2を使います。何か不足していますか? – radesix

4

あなたはちょうどあなたのモバイルデバイスで取得FBアクセストークンを使用して試すことができます。 (他のプロバイダでも可能)。サーバーにログイン/登録/両方のWebサービスに送信します。サーバー側では、fb sdkとアクセストークンを使用してユーザーを確認し、ユーザーにログインしてCookie /セッションを送信できます。

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段階のプロセスであることを持っているだろう。

まず、前述のように(顧客)はソーシャルログインプロセスを経なければなりません。

はその後成功した社会的なプロバイダのコールバックに、あなたは彼らがサードパーティによって要求されている/受け入れる権利の範囲を否定することができ、顧客へのインターフェイス(おそらく、ウェブベース)を表示する必要があると思います。最初のソーシャル・ログイン・ビットでは、ソーシャル・プロバイダーのコールバック・ステップで長い間それを渡すために、第三者が要求しているスコープを明示的に長くしたり保管したりする必要があります。

関連する問題