2015-01-26 6 views
2

gapi.auth.signIn을 호출하면 로그인 팝업을 열기 전에 사용자가 로그인 버튼을 클릭하기 전에 두 번 호출됩니다. 그러나 두 경우 모두 authResponse 매개 변수는 변경되지 않습니다. 여기 Google JS API : gapi.auth.signIn 콜백 함수 문제

내 코드 예제입니다 :

gapi.auth.signIn({ 
    scope: 'https://www.googleapis.com/auth/plus.login', 
    callback: function(authResponse) { 
    console.log(authResponse); 
    } 
)}; 

그리고 이것은 authResponse 객체가 두 경우 모두

처럼 모습입니다
{ 
    client_id: /* my client id */ 
    cookie_policy: undefined 
    error: "immediate_failed" 
    error_subtype: "access_denied" 
    expires_at: "1422353634" 
    expires_in: "86400" 
    g_user_cookie_policy: undefined 
    issued_at: "1422267234" 
    response_type: "token" 
    scope: "https://www.googleapis.com/auth/plus.login" 
    state: "" 
    status: 
     { 
     google_logged_in: false 
     method: null 
     signed_in: false 
     } 
} 

편집 : 나는 사용자가 이미 있는지 확인하려고에 서명하기 전에 Google에서 승인 한 코드는 다음과 같습니다.

gapi.auth.authorize({ 
     client_id: _googleClientId, 
     immediate: true, 
     scope: 'https://www.googleapis.com/auth/plus.login' 
    }, function(response) { 
     if (response.status.signed_in) { 
     connectGoogleSuccess(response); 
     } else { 
     gapi.auth.signIn({ 
      scope: 'https://www.googleapis.com/auth/plus.login', 
      callback: function(authResponse) { 
      console.log(authResponse); 
      } 
     )}; 
     } 
    } 
); 

사용자가 'Login'버튼을 클릭 한 후 authResponse 객체를 올바르게 변경하는 방법은 무엇입니까?

어떤 도움에 감사드립니다)

+0

나는이 문제와 정확히 붙어있다. 아직 해결 방법이 없습니까? –

+1

@ VarunArora, 오랫동안 의견을 보내 주셔서 죄송합니다.하지만 해결책을 찾았습니다. 아래에 설명되어 있으며 도움이되기를 바랍니다.) – zegoline

답변

1

좋아요, 여기에 내가있어 해결 방법입니다. 처음에는

  1. , 나는 매개 변수 "immediate"=true를 사용하여 gapi.auth.authorize 메소드를 호출, 그래서 팝업이 표시되지 않습니다 로그인합니다.

    gapi.auth.authorize({ client_id: _googleClientId, immediate: true, scope: 'https://www.googleapis.com/auth/plus.login' }, function(response) { if (response.status.signed_in) { connectGoogleSuccess(response); } else { connectGoogle(); } });

  2. 은 그 때 나는 "immediate"=true 다시 gapi.auth.authorize 메서드를 호출하므로 사용자가 입력 자신의 자격 증명을 할 수 있습니다. 이 사람을 도움이 될 것입니다

    connectGoogle() { gapi.auth.authorize({ client_id: _googleClientId, immediate: false, scope: 'https://www.googleapis.com/auth/plus.login' }, function(response) { if (response.status.signed_in) { connectGoogleSuccess(response); } }); };

희망!