2013-04-15 4 views
2

Google+ 로그인 API를 사용하는 웹 애플리케이션을 만들었지 만 자동 로그인 동작에 문제가 있습니다.Google+ 로그인 : 내 웹 앱 사용자로부터 로그 아웃 한 사용자가 Google과 계속 로그 됨

여기에 문제가있어, 내가 제대로 구현 한 경우되지 확신 : 자신의 Google+ 로그인 세부 정보를 사용하여 내 응용 프로그램에

  • 사용자 기호입니다.
  • 이제 내 앱과 Google 계정에 로그인합니다.
  • 작업이 끝나면 내 앱에서 로그 아웃되지만 Google에 계속 로그인됩니다.
  • 다른 사용자 (동일한 컴퓨터/브라우저 사용)가 내 사이트를 방문하면 이전 사용자 세부 정보를 사용하여 자동으로 로그인 한 것으로 가정합니다.

나는 나쁜 연습하고 내 사이트를 떠날 또는 b)에서의 Google+ 로그인을 자동으로 동작을 비활성화 할 때 중 하나) 자신의 Google 계정에서 로그 아웃 사용자 서명을 피하기 위해 이해합니다.

어떻게 이 문제를 방지 할 수 있습니까?

+1

의 중복 가능성 [방지 자동 로그인 할 때 사용하는 Google+ 로그인] (HTTP ://stackoverflow.com/questions/15484533/preventing-automatic-sign-in-when-using-google-sign-in) –

답변

1

사용자가 애플리케이션을 승인하면 Google+ 로그인 버튼이 애플리케이션을 자동으로 알립니다. 사용자가 다른 계정으로 사이트를 사용하려면 Google에서 로그 아웃하고 다른 사용자로 로그인해야합니다.

사용자와 사이트 사이의 로그인 상태가 Google의 사용자 로그인 상태와 다른 것으로 들리는 것 같습니다. 이를 위해서는 자신의 세션 상태를 관리해야합니다. 즉, 사용자가 앱을 승인 한 경우 버튼은 항상 자바 스크립트 콜백을 실행합니다. 개발자는 사용자가 로그인 버튼을 클릭 할 때까지 해당 정보를 무시할 수 있습니다. 일부 개발자는 버튼에 클릭 이벤트 핸들러를 연결하여이를 수행합니다.

+0

답변 해 주셔서 감사합니다. 나는 자동 로그인을 비활성화하고 싶지 않다. (나는 페이스 북과 트위터 같은 다중 소셜 로그인이 없다.) 그런 점에서 문제가되지 않는다. 누군가 공공 컴퓨터를 사용하는 경우 보안 문제가 될 수 있다고 생각했습니다. 하지만 개인이 Google에 로그인 한 상태임을 깨닫고 '로그인 상태 유지'체크 박스를 선택 취소하는 등의 예방 조치를 취하는 것이 좋습니다. – veritas1

+0

다른 사용자가 내 컴퓨터에 액세스 할 수있게하려면 Google에서 로그 아웃해야합니다.로그인 한 브라우저에 누군가 액세스 권한을 부여하는 것은 앱뿐 아니라 전체 Google 계정에 대한 보안 문제입니다. –

+0

@ChrisCartland Google OAuth2 (로그인 안함)의 컨텍스트에서 비슷한 질문을 많이하지만 파이썬/플라스크를 사용하여 구현하고 있습니다. 나는 초보자이고 구체적인 질문에 대답하는 방법을 모르겠습니다. 나는 내 질문에 여기를 살펴볼 수 있다면 고맙겠습니다 : https://stackoverflow.com/questions/47150564/how-to-log-user-out-of-an-app-that-uses-google -auth2-sign-in –

0

아래 질문의 대답을 참조하십시오. 그것은 당신의 시나리오

Preventing automatic sign-in when using Google+ Sign-In

그러나 심지어 구글 + 계정이 여전히 로그인 할 것이다 제안 된 솔루션과 매우 유사합니다. 당신이 할 수있는 또 다른 단계는 구글에서 로그 아웃하도록 사용자에게 요청하는 프롬프트를 추가입니다 + 계정이나 사용자 대신에 Google + 로그 아웃 API (있을 경우 확인하지 않음)를 호출 할 수 있습니다.

0

이 문제도 발생했습니다. 당신은 즉시 Gmail 계정에서 로그 아웃 할 필요가 당신의 Gmail 인증에서 이메일 ID를 얻을 :

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

function onSuccessG(googleUser) { 
     var profile = googleUser.getBasicProfile(); 
     console.log('ID: ' + profile.getId()); // Do not send to your backend! Use an ID token instead. 
     console.log('Name: ' + profile.getName()); 
     console.log('Image URL: ' + profile.getImageUrl()); 
     console.log('Email: ' + profile.getEmail()); 
     //now here write a code of login// 
     // 
     //now here write a code of login// 

     signOut();//call sign out function which will sign out user from their gmail accont 

} 
function onFailureG(error) { 
    console.log(error); 
} 
function renderButton() { 
    gapi.signin2.render('my-signin2', { 
    'scope': 'https://www.googleapis.com/auth/plus.login', 
    'width': 323, 
    'height': 35, 
    'longtitle': true, 
    'theme': 'dark', 
    'onsuccess': onSuccessG, 
    'onfailure': onFailureG 
    }); 
} 
function signOut() { 
    var auth2 = gapi.auth2.getAuthInstance(); 
    auth2.signOut().then(function() { 
     console.log('User signed out.'); 
    }); 
} 

관련 문제