이 페이지는 Cloud Translation API를 통해 번역되었습니다.
Switch to English

Google 로그인 자바 스크립트 클라이언트 참조

이 참조는 웹 애플리케이션에서 Google 로그인을 구현하는 데 사용할 자바 스크립트 클라이언트 메소드 및 속성을 설명합니다.

라이브러리 사용에 문제가 발생하면 GitHub 저장소에 보고 해주세요.

인증 설정

Google API 플랫폼 라이브러리를로드하여 gapi 개체를 만듭니다.

<script src="https://apis.google.com/js/platform.js?onload=init" async defer></script>

플랫폼 라이브러리가로드 된 후 auth2 라이브러리를로드합니다.

function init() {
  gapi.load('auth2', function() {
    /* Ready. Make a call to gapi.auth2.init or some other API */
  });
}

gapi.auth2.init ( params )

GoogleAuth 개체를 초기화합니다. gapi.auth2.GoogleAuth 의 메소드를 호출하기 gapi.auth2.GoogleAuth 메소드를 호출해야합니다.

GoogleAuth 객체를 초기화 할 때 OAuth 2.0 클라이언트 ID와 지정하려는 추가 옵션으로 객체를 구성합니다. 그런 다음 사용자가 이미 로그인 한 경우 GoogleAuth 개체는 이전 세션에서 사용자의 로그인 상태를 복원합니다.

인수
params 클라이언트 구성 데이터의 키-값 쌍을 포함하는 개체입니다. 구성 가능한 다양한 속성은 gapi.auth2.ClientConfig 를 참조하십시오. 예 :
{
  client_id: 'CLIENT_ID.apps.googleusercontent.com'
}
보고
gapi.auth2.GoogleAuth gapi.auth2.GoogleAuth 객체. then () 메서드를 사용하여 gapi.auth2.GoogleAuth 개체가 초기화를 완료하면 해결되는 Promise를 가져옵니다.

GoogleAuth.then ( onInit , onError )

GoogleAuth 개체가 완전히 초기화되면 onInit 함수를 호출합니다. 초기화하는 동안 오류가 발생하면 (지원되지 않는 이전 브라우저에서 발생할 수 있음) onError 함수가 대신 호출됩니다.

인수
onInit 완전히 초기화되었을 때 GoogleAuth 개체와 함께 호출되는 함수입니다.
onError GoogleAuth 가 초기화에 실패한 경우 error 속성이 포함 된 개체와 함께 호출되는 함수입니다.
보고
약속 onInit 함수가 완료되면 충족되거나 초기화 오류가 발생하면 거부되는 Promise 입니다. onInit 함수 (있는 경우)에서 반환 된 값으로 해결됩니다.

오류 코드

idpiframe_initialization_failed
예를 들어 지원되지 않는 환경으로 인해 Google에서 필요한 iframe을 초기화하지 못했습니다. details 속성은 발생한 오류에 대한 자세한 정보를 제공합니다.

gapi.auth2.ClientConfig

gapi.auth2.init 메소드에 대한 다양한 구성 매개 변수를 나타내는 인터페이스입니다.

매개 변수
client_id string 필수입니다. Google Developers Console에서 찾고 생성 한 앱의 클라이언트 ID입니다.
cookie_policy string 로그인 쿠키를 만들 도메인입니다. URI, single_host_origin 또는 none 입니다. 지정되지 않은 경우 기본값은 single_host_origin 입니다.
scope string 공백으로 구분 된 문자열로 요청할 범위입니다. fetch_basic_profile 이 false로 설정되지 않은 경우 선택 사항입니다.
fetch_basic_profile boolean 로그인 할 때 사용자의 기본 프로필 정보를 가져옵니다. 요청 된 범위에 '프로필', '이메일'및 '개방형'을 추가합니다. 지정되지 않은 경우 참.
hosted_domain string 사용자가 로그인하기 위해 속해야하는 G Suite 도메인입니다. 이는 클라이언트에 의해 수정 될 수 있으므로 반환 된 사용자의 호스팅 된 도메인 속성을 확인해야합니다. 클라이언트에서 GoogleUser.getHostedDomain () 을 사용하고 서버의 ID 토큰에서 hd 클레임을 사용하여 도메인이 예상 한대로인지 확인합니다.
ux_mode string 로그인 흐름에 사용할 UX 모드입니다. 기본적으로 동의 흐름이 팝업으로 열립니다. 유효한 값은 popupredirect 입니다.
redirect_uri string ux_mode='redirect' 를 사용하는 경우이 매개 변수를 사용하면 동의 흐름 끝에 사용될 기본 redirect_uri 를 재정의 할 수 있습니다. 기본 redirect_uri 는 쿼리 매개 변수와 해시 조각이 제거 된 현재 URL입니다.

입증

GoogleAuth 는 사용자가 Google 계정으로 로그인하고, 사용자의 현재 로그인 상태를 가져오고, 사용자의 Google 프로필에서 특정 데이터를 가져오고, 추가 범위를 요청하고, 현재 계정에서 로그 아웃 할 수 있도록하는 메소드를 제공하는 싱글 톤 클래스입니다.

gapi.auth2.getAuthInstance ()

GoogleAuth 개체를 반환합니다. 이 메소드를 호출하기 전에 gapi.auth2.init() GoogleAuth 객체를 초기화해야합니다.

보고
gapi.auth2.GoogleAuth gapi.auth2.GoogleAuth 객체. 이 개체를 사용하여 gapi.auth2.GoogleAuth 의 메서드를 호출합니다.

GoogleAuth.isSignedIn.get ()

현재 사용자가 현재 로그인되어 있는지 여부를 반환합니다.

보고
부울 사용자가 로그인되어 있으면 true 이고, 사용자가 GoogleAuth 아웃했거나 GoogleAuth 개체가 초기화되지 않은 경우 false 입니다.

GoogleAuth.isSignedIn.listen (listener)

현재 사용자의 로그인 상태 변경을 수신합니다.

인수
listener 부울 값을받는 함수입니다. listen() 은 사용자가 로그인 할 때이 함수에 true 를 전달하고 사용자가 로그 아웃하면 false 를 전달합니다.

GoogleAuth.signIn ()

gapi.auth2.init() 지정된 옵션으로 사용자를 gapi.auth2.init() 합니다.

보고
약속 사용자가 요청 된 범위를 성공적으로 인증하고 부여 할 때 GoogleUser 인스턴스로 이행되거나 오류가 발생한 경우 error 속성이 포함 된 객체로 거부되는 Promise 입니다 (오류 코드는 아래 참조).

오류 코드

GoogleAuth.signIn( options ) 참조하십시오.

GoogleAuth.signIn ( options )

지정된 옵션을 사용하여 사용자를 로그인합니다.

인수
options 어느 한 쪽:
  • 로그인 매개 변수의 키-값 쌍을 포함하는 gapi.auth2.SignInOptions 객체. 예 :
    {
      scope: 'profile email'
    }
  • gapi.auth2.SigninOptionsBuilder 의 인스턴스. 예 :
    options = new gapi.auth2.SigninOptionsBuilder();
    options.setAppPackageName('com.example.app');
    options.setFetchBasicProfile(True);
    options.setPrompt('select_account');
    options.setScope('profile').setScope('email');
보고
약속 사용자가 요청 된 범위를 성공적으로 인증하고 부여 할 때 GoogleUser 인스턴스로 이행되거나 오류가 발생한 경우 error 속성이 포함 된 객체로 거부되는 Promise (오류 코드는 아래 참조).

오류 코드

popup_closed_by_user
사용자가 로그인 흐름을 완료하기 전에 팝업을 닫았습니다.
access_denied
사용자가 필요한 범위에 대한 권한을 거부했습니다.
immediate_failed
동의 흐름을 확인하지 않고는 사용자를 자동으로 선택할 수 없습니다. 사용할 때 오류가 발생 signIn 함께 prompt: 'none' 옵션을 선택합니다. gapi.auth2.init 는 이전 세션에서 이전에 로그인 한 경우 사용자를 자동으로 로그인 gapi.auth2.init 옵션을 사용할 필요는 없습니다.

gapi.auth2.SignInOptions

GoogleAuth.signIn( options ) 메서드의 다양한 구성 매개 변수를 나타내는 인터페이스입니다.

매개 변수
prompt string 동의 흐름에 특정 모드를 적용합니다. 선택 과목.
가능한 값은 다음과 같습니다.
  • consent
    권한 부여 서버는 정보를 응용 프로그램에 반환하기 전에 사용자에게 동의를 요청합니다.
  • select_account
    인증 서버는 사용자에게 Google 계정을 선택하라는 메시지를 표시합니다. 이를 통해 여러 계정을 가진 사용자가 현재 세션이있을 수있는 여러 계정 중에서 선택할 수 있습니다.
  • none ( 권장하지 않음 )
    권한 부여 서버는 인증 또는 사용자 동의 화면을 표시하지 않습니다. 사용자가 아직 인증되지 않았고 요청 된 범위에 이전에 동의하지 않은 경우 오류를 반환합니다.
    gapi.auth2.init 는 이전에 로그인 한 경우 자동으로 사용자를 애플리케이션에 로그인하므로 signIn({prompt: 'none'}) 호출은 일반적으로 실패합니다.
scope string gapi.auth2.init 매개 변수에 정의 된 범위 위에 공백으로 구분 된 문자열로 요청할 범위입니다. fetch_basic_profile 이 false로 설정되지 않은 경우 선택 사항입니다.
ux_mode string 로그인 흐름에 사용할 UX 모드입니다. 기본적으로 동의 흐름이 팝업으로 열립니다. 유효한 값은 popupredirect 입니다.
redirect_uri string ux_mode='redirect' 를 사용하는 경우이 매개 변수를 사용하면 동의 흐름 끝에 사용될 기본 redirect_uri 를 재정의 할 수 있습니다. 기본 redirect_uri 는 쿼리 매개 변수와 해시 조각이 제거 된 현재 URL입니다.

GoogleAuth.signOut ()

응용 프로그램에서 현재 계정을 로그 아웃합니다.

보고
약속 사용자가 로그 아웃했을 때 이행되는 Promise 입니다.

GoogleAuth.disconnect ()

사용자가 부여한 모든 범위를 취소합니다.

GoogleAuth.grantOfflineAccess ( options )

사용자로부터 지정된 범위에 오프라인으로 액세스 할 수있는 권한을 얻습니다.

인수
options 매개 변수의 키-값 쌍을 포함하는 gapi.auth2.OfflineAccessOptions 객체. 예 :
{
  scope: 'profile email'
}
보고
약속 Promise 사용자가로 인증 코드가있는 객체 전달 요구 범위를 부여 할 때 성취 Promise 의 이행 처리기. 예 :
auth2.grantOfflineAccess().then(function(resp) {
  var auth_code = resp.code;
});

오류 코드

popup_closed_by_user
사용자가 동의 흐름을 완료하기 전에 팝업을 닫았습니다.
access_denied
사용자가 필요한 범위에 대한 권한을 거부했습니다.
immediate_failed
동의 흐름을 확인하지 않고는 사용자를 자동으로 선택할 수 없습니다. 사용할 때 오류가 발생 signIn 함께 prompt: 'none' 옵션을 선택합니다. gapi.auth2.init 는 이전 세션에서 이전에 로그인 한 경우 사용자를 자동으로 로그인 gapi.auth2.init 옵션을 사용할 필요는 없습니다.

gapi.auth2.OfflineAccessOptions

GoogleAuth.grantOfflineAccess( options ) 메소드의 다양한 구성 매개 변수를 나타내는 인터페이스입니다.

매개 변수
prompt string 동의 흐름에 특정 모드를 적용합니다. 선택 과목.
가능한 값은 다음과 같습니다.
  • consent
    권한 부여 서버는 정보를 응용 프로그램에 반환하기 전에 사용자에게 동의를 요청합니다.
  • select_account
    인증 서버는 사용자에게 Google 계정을 선택하라는 메시지를 표시합니다. 이를 통해 여러 계정을 가진 사용자가 현재 세션이있을 수있는 여러 계정 중에서 선택할 수 있습니다.
scope string gapi.auth2.init 매개 변수에 정의 된 범위 위에 공백으로 구분 된 문자열로 요청할 범위입니다. fetch_basic_profile 이 false로 설정되지 않은 경우 선택 사항입니다.

GoogleAuth.attachClickHandler ( container , options , onsuccess , onfailure )

로그인 흐름을 지정된 컨테이너의 클릭 핸들러에 연결합니다.

인수
container 클릭 핸들러를 연결할 div 요소의 ID 또는 참조입니다.
options 매개 변수의 키-값 쌍을 포함하는 개체입니다. GoogleAuth.signIn ()을 참조하십시오.
onsuccess 로그인이 완료된 후 호출 할 함수입니다.
onfailure 로그인에 실패 할 경우 호출 할 함수입니다.

사용자

GoogleUser 개체는 하나의 사용자 계정을 나타냅니다. GoogleUser 객체는 일반적으로 GoogleAuth.currentUser.get () 을 호출하여 얻습니다.

GoogleAuth.currentUser.get ()

현재 사용자를 나타내는 GoogleUser 개체를 반환합니다. 새로 초기화 된 GoogleAuth 인스턴스에서는 현재 사용자가 설정되지 않았습니다. currentUser.listen() 메서드 또는 GoogleAuth.then() 을 사용하여 초기화 된 GoogleAuth 인스턴스를 가져옵니다.

보고
GoogleUser 현재 사용자

GoogleAuth.currentUser.listen ( listener )

currentUser의 변경 사항을 수신합니다.

인수
listener GoogleUser 매개 변수를 사용하는 함수입니다. listencurrentUser 를 수정하는 모든 변경 사항에서이 함수를 GoogleUser 인스턴스에 전달합니다.

GoogleUser.getId ()

사용자의 고유 ID 문자열을 가져옵니다.

보고
사용자의 고유 ID

GoogleUser.isSignedIn ()

사용자가 로그인 한 경우 true를 반환합니다.

보고
부울 사용자가 로그인 한 경우 True

GoogleUser.getHostedDomain ()

사용자가 G Suite 계정으로 로그인 한 경우 사용자의 G Suite 도메인을 가져옵니다.

보고
사용자의 G Suite 도메인

GoogleUser.getGrantedScopes ()

사용자가 공백으로 구분 된 문자열로 부여한 범위를 가져옵니다.

보고
사용자가 부여한 범위

GoogleUser.getBasicProfile ()

사용자의 기본 프로필 정보를 가져옵니다.

보고
gapi.auth2.BasicProfile 다음 메서드를 사용하여 gapi.auth2.BasicProfile 의 속성을 검색 할 수 있습니다.
  • BasicProfile.getId ()
  • BasicProfile.getName ()
  • BasicProfile.getGivenName ()
  • BasicProfile.getFamilyName ()
  • BasicProfile.getImageUrl ()
  • BasicProfile.getEmail ()

GoogleUser.getAuthResponse (includeAuthorizationData)

사용자의 인증 세션에서 응답 개체를 가져옵니다.

인수
includeAuthorizationData 선택 사항 : 항상 액세스 토큰 및 범위를 리턴할지 여부를 지정하는 부울입니다. 기본적으로 fetch_basic_profile 이 true (기본값)이고 추가 범위가 요청되지 않은 경우 액세스 토큰 및 요청 된 범위가 반환되지 않습니다.
보고
gapi.auth2.AuthResponse gapi.auth2.AuthResponse 객체.

GoogleUser.reloadAuthResponse ()

액세스 토큰을 강제로 새로 고친 다음 새 AuthResponse에 대한 Promise를 반환합니다.

보고
Promise OAuth 토큰을 다시로드 할 때 다시로드 된 gapi.auth2.AuthResponse 이행되는 Promise 가 완료됩니다.

gapi.auth2.AuthResponse

GoogleUser.getAuthResponse( includeAuthorizationData ) 또는 GoogleUser.reloadAuthResponse() 메서드를 호출 할 때 반환되는 응답입니다.

속성
access_token string 부여 된 액세스 토큰입니다.
id_token string 부여 된 ID 토큰입니다.
scope string 액세스 토큰에 부여 된 범위입니다.
expires_in number 액세스 토큰이 만료 될 때까지의 시간 (초)입니다.
first_issued_at number 사용자가 요청한 범위를 처음으로 부여한 타임 스탬프입니다.
expires_at number 액세스 토큰이 만료되는 타임 스탬프입니다.

GoogleUser.hasGrantedScopes ( scopes )

사용자가 지정된 범위를 부여한 경우 true를 반환합니다.

인수
scopes 공백으로 구분 된 범위 문자열입니다.
보고
부울 범위가 부여 된 경우 True

GoogleUser.grant ( options )

사용자에게 추가 범위를 요청합니다.

매개 변수 목록과 오류 코드는 GoogleAuth.signIn() 을 참조하세요.

GoogleUser.grantOfflineAccess ( options )

사용자로부터 지정된 범위에 오프라인으로 액세스 할 수있는 권한을 얻습니다.

인수
options 매개 변수의 키-값 쌍을 포함하는 gapi.auth2.OfflineAccessOptions 객체. 예 :
{
  scope: 'profile email'
}

GoogleUser.disconnect ()

사용자가 애플리케이션에 대해 부여한 모든 범위를 취소합니다.

UI 요소

gapi.signin2.render ( id , options )

options 개체에 지정된 설정을 사용하여 지정된 ID로 요소에서 로그인 버튼을 렌더링합니다.

인수
id 로그인 버튼을 렌더링 할 요소의 ID입니다.
options 버튼을 렌더링하는 데 사용할 설정이 포함 된 개체입니다. 예 :
{
  scope: 'email',
  width: 200,
  height: 50,
  longtitle: true,
  theme: 'dark',
  onsuccess: handleSuccess,
  onfailure: handleFailure
}
다음 옵션을 지정할 수 있습니다.
매개 변수
범위 사용자가 로그인 할 때 요청할 범위 (기본값 : profile ).
버튼의 너비 (픽셀)입니다 (기본값 : 120 ).
신장 버튼의 높이 (픽셀)입니다 (기본값 : 36 ).
긴 제목 '로그인'이 아닌 'Google로 로그인'과 같은 긴 라벨을 표시합니다 (기본값 : false ). 긴 제목을 사용하는 경우 기본값에서 버튼의 너비를 늘려야합니다.
테마 버튼의 색상 테마 : light 또는 dark (기본값 : light ).
성공 사용자가 성공적으로 로그인 할 때 호출 할 콜백 함수입니다.이 함수는 gapi.auth2.GoogleUser 의 인스턴스 (기본값 : none) 하나의 인수를 가져야합니다.
onfailure 로그인 실패시 호출 할 콜백 함수입니다. 이 함수는 인수를 사용하지 않습니다 (기본값 : 없음).

많은

gapi.auth2.authorize ( params , callback )

일회성 OAuth 2.0 인증을 수행합니다. 사용 된 매개 변수에 따라 Google 로그인 흐름에 대한 팝업이 열리거나 사용자 상호 작용없이 요청 된 응답을 자동으로로드하려고 시도합니다.

이 방법이 유용한 몇 가지 사용 사례는 다음과 같습니다.

  • 애플리케이션은 사용자가 처음 로그인 할 때 좋아하는 YouTube 동영상을로드하는 등 Google API 엔드 포인트를 한 번만 요청하면됩니다.
  • 애플리케이션에는 자체 세션 관리 인프라가 있으며 백엔드에서 사용자를 식별하기 위해 ID 토큰이 한 번만 필요합니다.
  • 동일한 페이지 내에서 여러 클라이언트 ID가 사용됩니다.
인수
params 구성 데이터의 키-값 쌍을 포함하는 개체입니다. 구성 가능한 다양한 속성에 대해서는 gapi.auth2.AuthorizeConfig 를 참조하십시오. 예 :
{
  client_id: 'CLIENT_ID.apps.googleusercontent.com',
  scope: 'email profile openid',
  response_type: 'id_token permission'
}
callback 요청이 완료된 후 (성공 또는 실패로) gapi.auth2.AuthorizeResponse 객체와 함께 호출되는 함수입니다.

gapi.auth2.authorize({
  client_id: 'CLIENT_ID.apps.googleusercontent.com',
  scope: 'email profile openid',
  response_type: 'id_token permission'
}, function(response) {
  if (response.error) {
    // An error happened!
    return;
  }
  // The user authorized the application for the scopes requested.
  var accessToken = response.access_token;
  var idToken = response.id_token;
  // You can also now use gapi.client to perform authenticated requests.
});

오류 코드

idpiframe_initialization_failed
예를 들어 지원되지 않는 환경으로 인해 Google에서 필요한 iframe을 초기화하지 못했습니다. details 속성은 발생한 오류에 대한 자세한 정보를 제공합니다.
popup_closed_by_user
사용자가 로그인 흐름을 완료하기 전에 팝업을 닫았습니다.
access_denied
사용자가 필요한 범위에 대한 권한을 거부했습니다.
immediate_failed
동의 흐름을 확인하지 않고는 사용자를 자동으로 선택할 수 없습니다. 사용할 때 오류가 발생 signIn 함께 prompt: 'none' 옵션을 선택합니다.

gapi.auth2.AuthorizeConfig

gapi.auth2.authorize 메소드에 대한 다양한 구성 매개 변수를 나타내는 인터페이스입니다.

속성
client_id string 필수 . Google Developers Console에서 찾고 생성 한 앱의 클라이언트 ID입니다.
scope string 필수 . 공백으로 구분 된 문자열로 요청할 범위입니다.
response_type string 공백으로 구분 된 응답 유형 목록입니다. 기본값은 'permission' 입니다. 가능한 값은 다음과 같습니다.
  • id_token , ID 토큰 검색
  • permission (또는 token ), 액세스 토큰 검색
  • code , 인증 코드 검색
prompt string 동의 흐름에 특정 모드를 적용합니다. 가능한 값은 다음과 같습니다.
  • consent
    권한 부여 서버는 정보를 응용 프로그램에 반환하기 전에 사용자에게 동의를 요청합니다.
  • select_account
    인증 서버는 사용자에게 Google 계정을 선택하라는 메시지를 표시합니다. 이를 통해 여러 계정을 가진 사용자가 현재 세션이있을 수있는 여러 계정 중에서 선택할 수 있습니다.
  • none
    권한 부여 서버는 인증 또는 사용자 동의 화면을 표시하지 않습니다. 사용자가 아직 인증되지 않았고 요청 된 범위에 이전에 동의하지 않은 경우 오류를 반환합니다.
    code 가 응답 유형으로 요청되면 반환 된 코드는 refresh_token 아니라 access_token 만 교환 할 수 있습니다.
cookie_policy string 로그인 쿠키를 만들 도메인입니다. URI, single_host_origin 또는 none 입니다. 지정되지 않은 경우 기본값은 single_host_origin 입니다.
hosted_domain string 사용자가 로그인하기 위해 속해야하는 G Suite 도메인입니다. 이는 클라이언트에 의해 수정 될 수 있으므로 반환 된 사용자의 호스팅 된 도메인 속성을 확인해야합니다.
login_hint string 로그인 과정에서 미리 선택할 사용자의 이메일 또는 사용자 ID입니다. prompt: "none" 이 사용 prompt: "none" 않는 한 사용자가 수정할 수 있습니다.
include_granted_scopes boolean 사용자가 이전에 앱에 부여한 모든 범위를 포함하는 액세스 토큰을 요청할지 또는 현재 호출에서 요청 된 범위 만 요청할지 여부입니다. 기본값은 true 입니다.

gapi.auth2.AuthorizeResponse

gapi.auth2.authorize 메서드의 콜백에 반환 된 응답입니다.

속성
access_token string 부여 된 액세스 토큰입니다. response_typepermission 또는 token 이 지정된 경우에만 존재합니다.
id_token string 부여 된 ID 토큰입니다. response_typeid_token 이 지정된 경우에만 존재합니다.
code string 부여 된 인증 코드입니다. response_typecode 가 지정된 경우에만 존재합니다.
scope string 액세스 토큰에 부여 된 범위입니다. response_typepermission 또는 token 이 지정된 경우에만 존재합니다.
expires_in number 액세스 토큰이 만료 될 때까지의 시간 (초)입니다. response_typepermission 또는 token 이 지정된 경우에만 존재합니다.
first_issued_at number 사용자가 요청한 범위를 처음으로 부여한 타임 스탬프입니다. response_typepermission 또는 token 이 지정된 경우에만 존재합니다.
expires_at number 액세스 토큰이 만료되는 타임 스탬프입니다. response_typepermission 또는 token 이 지정된 경우에만 존재합니다.
error string 요청이 실패하면 오류 코드가 포함 됩니다.
error_subtype string 요청이 실패하면 반환 된 오류 코드에 대한 추가 정보를 포함 할 수 있습니다.