2012-07-04 1 views
18

맞춤 웹 기반 소셜 네트워크 앱을위한 기본 모바일 앱을 개발 중입니다. 우리는 웹 서버와 통신하기 위해 REST API를 구축 중이며 인증 방법으로 OAuth2를 선택했습니다 (grant_type=password 흐름).OAuth2 "소셜 로그인"흐름 (Facebook/Twitter를 통한 OAuth2 인증 허용) : 예/문헌이 있습니까?

웹 응용 프로그램을 사용하면 외부 서비스 (예 : Facebook 및 Twitter)를 사용하여 로그인하고 가입 할 수 있습니다. 모바일 앱에서도 같은 것을 허용해야합니다. 문제는 어떻게 할 수 있는가?

Pinterest 모바일 앱은 상황을 관리 할 수 ​​있습니다 (첨부 된 이미지 참조). 여기에 사용 된 흐름은 무엇입니까?

Pinterest Login View

은 고전의 OAuth - 전원 애플리케이션처럼 동작 수행 (페이스 북 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 ..이 후 수행 할 권리 경로, 제 + 번째 단계 인 경우 (우리의 커스텀 API에 페이스 북 토큰을 전송하고 토큰 자체를 검증하는 것)은 추가 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. 웹 응용 프로그램은 사용자가 다양한 OpenID/OAuth 공급자 중에서 선택할 수있는 영역입니다.
2. 응용 프로그램이 공급자의 서버로 리디렉션됩니다 (가능한 경우 게시물 데이터에 응용 프로그램 정보를 추가 - 자세한 내용은 특정 공급자의 API 참조). OpenID와 OAuth는 일련의 리디렉션을 사용하여 사용자를 인증합니다. 핵심은 인증이 공급자의 사이트에서 발생하며 암호가 저장되는 곳입니다.
3. 사용자가 선택한 공급자에 로그인하면 사이트로의 새로운 리디렉션이 콜백 URL 메커니즘을 통해 발생합니다.
4.이 리디렉션에는 OpenID/OAuth 공급자가 제공 한 인증 된 사용자에 대한 정보가 포함됩니다. 리디렉션은 최소한 응용 프로그램에 '사용자 이름'을 제공합니다.
5.이 정보를 사용하여 인증 된 사용자가 사이트에 입장 할 수 있는지 여부를 확인하십시오.

+1

Gianni에게 감사의 말을 전합니다.하지만 문제는 Facebook에서 OAuth 클라이언트 역할을하는 웹 앱과 관련이 없습니다. 이는 모두 고전적이고 문서화 된 것입니다. 제 질문은 맞춤 API를 사용하려고하지만 직접 OAuth 연결이 아닌 제 3 자 OAuth 승인자 (예 : Facebook)를 통해 인증해야하는 모바일 앱에 대한 것입니다. –

1

스테파노

우리는 이것에 대한 StackMob를 사용합니다.그것은 매우 잘 작동하고 구현하기가 매우 쉽습니다.

StackMob SDK는 Facebook 및 Twitter를 통해 OAUTH2 보안 및 인증을 제공합니다.

업데이트 : StackMob no longer exists as of May 2014

+1

* * 및 * * OP가이 SDK를 사용할 수있는 위치와 그의 질문에 * 답변 *한다고 생각하는 이유에 대해 설명하는 것이 친절 할 것입니다. –

+0

그래, 고마워 radesix, 나는 그들의 API [페이스 북을 사용하여 사용자를 생성하고 로그인하는 것을 지원한다] (https://stackmob.com/devcenter/docs/User-Authentication-API)와 관련이있다. OAuth2. 물론, 그들은 또한 OAuth2 프로토콜을 지원하는 것처럼 보이지만이 특정 문제를 해결하는 것은 아닙니다. –

+0

스테파노, 왜 이것이 당신의 문제를 해결하지 못할지 모르겠습니다. StackMob은 요청할 때 OAUTH 2를 사용합니다. 내가 놓친 게 있니? – radesix

4

당신은 FB 액세스를 사용하여 시도 할 수 있습니다 당신은 당신의 모바일 장치에서 검색 토큰. (다른 공급자도 될 수 있음). 서버에 로그인/등록/두 웹 서비스로 보냅니다. 서버 측에서는 fb sdk 및 액세스 토큰을 사용하여 사용자를 확인하고 사용자를 로그인 한 다음 쿠키/세션을 보낼 수 있습니다.

0

소셜 로그인 공급자에 대해 다른 OAuth 클라이언트 ID를 만듭니다.

예 :

페이스 북 - 클라이언트 ID # 1 트위터 - 클라이언트 ID # 2


는 사회적 흐름에 대한 공개 경로를 만듭니다.

예 : 사회 제공자 콜백의 성공

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

, 그런 다음 액세스 토큰을 생성 프로그램 해당 사용자에 대한 데이터 저장소에서 데이터를 가져 오기 위해 필요합니다클라이언트 ID에 부여하려는 사전 정의 된 범위를 사용하십시오. 당신이 제 3 자 직접 API를 사용을 시도하여 자신의 고객과의 인터페이스를 시도했다 경우


, 2 단계 프로세스 일해야 할 것입니다.

먼저 고객 (고객)은 앞서 설명한대로 소셜 로그인 프로세스를 거쳐야합니다.

성공적인 소셜 프로 바이더 콜백에서 고객에게 제 3자가 요청한 권한의 범위를 허용/거부 할 수 있도록 인터페이스를 표시해야합니다 (웹 기반 일 수 있음). 초기 소셜 로그인 비트에서는 분명히 사회 공급자 콜백 단계를 오랫동안 전달하기 위해 제 3자가 요청한 범위를 길거나 저장해야합니다.