2014-03-12 2 views
2

G + 로그인 플로우에서 머리를 감싸려고합니다.하지만 올바르게 입력했는지 확신 할 수 없습니다.Google+ 플로우에 로그인하여

나는 주로 그 흐름에 난 내 자신의 데이터베이스에 연결 및 사용자 이름 및 권한과 같은 일을 인출 할 수 this page

에서 찾고있는 것을 나는 빨리 (내 데이터베이스에 식별자로 저장하는 생각입니다 다음 로그온 확인)? G + API에 대해 이야기하고 G + ID를 가져 와서 (사용자에 대해 저장하려는 데이터와 함께) 저장해야하나요?

두 번째로 로그인 할 때 흐름이 어떻게 보이나요? 결국 DB에서 찾을 수 있도록 G + ID (사용했을 경우)를 알려줄 수있는 무언가가 필요합니다.

답변

3

Google+ API 호출을 사용하는 가장 빠른 방법은 the Google+ Quickstarts입니다. 이 샘플을 통해 응용 프로그램에 복사하여 붙여 넣을 준비가 된 코드를 얻을 수 있습니다. 나는 애플 리케이션에서 시연 된 흐름을 곧 논의 할 것이다.

OAuth 2.0에서와 마찬가지로 API 호출을 인증하기 위해 무기 토큰 (OAuth 2.0의 액세스 토큰)을 얻는 것이 목표입니다. 토큰은 여러 가지 방법으로 검색 할 수 있지만 Google+ 로그인 버튼을 사용하여 로그인 할 때 가장 중요한 것은 코드 교환입니다.

처음으로 사용자가 귀하의 사이트를 만날 때 (가입이라고 부름) 흐름은 코드 교환이됩니다. 코드 교환 패턴은 다음과 같습니다

  1. 사용자는
  2. 사용자가
  3. 코드가 자바 스크립트에서 반환 승인/인증 화면이 표시됩니다 사이트
  4. 사용자가 클릭 선호 인증 (Google+ 로그인)에 도달 웹 클라이언트
  5. 웹 클라이언트 (HTML/JavaScript)가 서버에 인증 코드를 전달합니다.
  6. 서버가 새로 고침 및 액세스 토큰에 대한 코드를 교환 한 후이 토큰을 캐시합니다.

이 시점에서 서버에 액세스 토큰이 있습니다. 즉, 앱에 부여 된 사용자 권한에 따라 API 호출 (예 : plus.people.get ('me'), 로그인 한 사용자의 프로필을 가져올 수 있음)을 Google에 보낼 수 있습니다.

이제 사용자는 귀하의 서버에 대해 인증을 받아야하며 인증은 사용자의 세션 등에 따라 이루어져야합니다. 그러나 새로운 문제가 생겼습니다. 사용자가 새 브라우저에서 다시 사이트에 액세스하거나 세션을 파괴하면 어떻게됩니까?

다음 중요한 흐름으로 넘어갈 때가 왔습니다. 인증 ("로그인"이라고 함) 흐름입니다. 로그인의 경우, 클라이언트가 서버에 인증 증명서 (다시 베어러 토큰)를 전달한 다음 데이터베이스의 사용자에 대한 새 세션을 설정하기 전에 권한 정보를 검증하도록해야합니다.

verify token examples on the Google+ Github page은 ID 토큰을 보내고 확인하기위한 간결한 코드를 보여줍니다.

인증을 위해 베어러 토큰 유형 인 ID 토큰을 전달하는 한 가지 방법에 대해 자세히 설명합니다.사이트

  • Google+에

    1. 사용자 징후 로그인 버튼이 클라이언트는 서버에 안전하게
    2. 서버의 ID 토큰을 전달
    3. 콜백에 ID 토큰을 반환 ID 토큰을 확인 *
    4. 클라이언트 세션은 다음을 포함하여, 테스트 그러나 일반적인 세트를 * 가장 다른 질문에 배치됩니다

    단계를 인증 ES :

    1. 토큰의 인증서를 확인 구글의
    2. 클라이언트 ID가이 응용 프로그램
    3. 사용자 확인을위한 확인 귀하의 사이트에 계정이
    4. (오프라인 액세스를 필요로하는 경우 옵션이 작업을 수행)
    5. 토큰이 만료되지 않았는지 확인하십시오.

    희망 사항은 두 가지를 해결합니다.

    오프라인 API 액세스, 토큰 새로 고침에 사용되는 마지막 플로우가 하나 있습니다. 새로 고침 토큰과 만료 된 액세스 토큰이 있으면 토큰 새로 고침이 발생합니다. Google의 OAuth 2.0 구현을 위해 액세스 토큰은 3600 초 (1 시간) 후에 만료됩니다. 이러한 토큰이 만료되기 때문에 저장된 액세스 토큰이 만료되면 새 액세스 토큰을 가져올 수 있어야합니다. 이렇게하려면, 당신은 Google에 3 개 비트를 전달합니다

    1. 새로 고침 토큰
    2. (코드 교환에서 검색) (다시, Google developer console에서 검색)
    3. 클라이언트 비밀합니다 (Google developer console에서 검색)
    4. 클라이언트 ID

    이러한 부분은 Google OAuth 서버로 전달되고 서버는 오프라인 API 액세스에 사용할 수있는 새로운 액세스 토큰을 반환합니다.

    다양한 정보가이 주제에있다

    도 참조 :

  • +0

    이 특히 (부분을 확인, 내가 원하는 정확히 대답, 모든 것을 명확히 감사했다 그 하나를 놓쳤다!) "google-api-python-client"(개발자 및 프로덕션 모두)를 설치하고 사용하도록 권하고 싶습니다. 아니면 내 자신의 요청을 작성해야합니까? 편집 : 당신이 구글을 위해 일하는 것을 보았습니다, 그래서 나는 그것이 예 (하하)라고 생각합니다! – fgblomqvist

    +0

    @fgblomqvist - 예, Google의 클라이언트 라이브러리가 있습니다. Python의 경우 클라이언트 라이브러리가 베타 버전이 아니기 때문에 더욱 그렇습니다. 즉, Google에서 지원한다는 의미입니다. – class

    +0

    파이썬 3에서는 라이브러리를 사용할 수 없다는 것을 알았습니다. 처음부터 코드를 작성해야 할 것 같습니다. – fgblomqvist

    관련 문제