2017-04-27 50 views
0

내 웹 사이트에서 Google 로그인 버튼을 사용하고 있습니다. 나는 사용자를 인증하고 사용자의 프로필 정보를 얻을 수 있습니다.Google 로그인 사용 중 추가 사용 권한

이 나는이 Integrating Google Sign-In into your web app

<div id="my-signin2" ></div> 

gapi.signin2.render('my-signin2', { 
      'scope': 'profile email', 
      'width': 240, 
      'height': 50, 
      'longtitle': true, 
      'theme': 'light', 
      'onsuccess': this.onSuccess, 
      'onfailure': this.onFailure 
     }); 

     onSuccess(googleUser) { 
       var id_token = googleUser.getAuthResponse().id_token; 
       var name = googleUser.getBasicProfile().getName()); 
       var email = googleUser.getBasicProfile().getEmail()); 
       var imageUrl = googleUser.getBasicProfile().getImageUrl()); 

     } 
     onFailure(error) { 
     } 

지금 나는 그가 구글을 사용하여 권한을 부여하면서 사용자의 연락처를 읽을 필요가 따랐다.

그래서 연락처를 가져 오기위한 전 범위 모든 일이 잘 작동 https://www.googleapis.com/auth/contacts.readonly

 gapi.signin2.render('my-signin2', { 
      'scope': 'profile email https://www.googleapis.com/auth/contacts.readonly', 
      'width': 240, 
      'height': 50, 
      'longtitle': true, 
      'theme': 'light', 
      'onsuccess': this.onSuccess, 
      'onfailure': this.onFailure 
     }); 

을 추가했습니다. gmail을 사용하여 사용자가 권한을 부여한 후 사용자에게 권한 화면을 표시하고 권한을 요청합니다.

하지만 사용자가 권한을 거부하면 사용자를 로깅하지 않습니다. 그가 부인해도 사용자가 로그인하고 싶습니다. 연락을받지 않으면 확인을합니다.

나는 (사용자가 이메일을 승인 한 후)에 대한 requesting additional scopes.

 var options = new gapi.auth2.SigninOptionsBuilder(
       {'scope': 'https://www.googleapis.com/auth/contacts.readonly'}); 

     googleUser = auth2.currentUser.get(); 
     googleUser.grant(options).then(
      function(success){ 
       console.log(JSON.stringify({message: "success", value: success})); 
      }, 
      function(fail){ 
       alert(JSON.stringify({message: "fail", value: fail})); 
      }); 

내가는 onSuccess이 후 사용할 때, 항상 방법을 실패 간다 읽었습니다. 주는 오류 "popup_closed_by_user"해결책 발견이 thread

의 논의 사항에 따라

답변

0

.

추가 범위를 요청하기위한 또 다른 버튼이 만들어지고 버튼의 부여 방법이라는 버튼이 호출되었습니다. 그것이 범위를 얻기 위해

var options = new gapi.auth2.SigninOptionsBuilder(
      {'scope': 'https://www.googleapis.com/auth/contacts.readonly'}); 

작동하지 않습니다

당신은 당신이 방법을 사용한다이 같은 옵션을 설정하면

let googleUser = auth2.currentUser.get(); 

var options = new gapi.auth2.SigninOptionsBuilder(); 
options.setScope('https://www.googleapis.com/auth/contacts.readonly'); 


googleUser.grant(options).then(
     function(success){ 
      console.log(JSON.stringify({message: "success", value: success})); 
     }, 
     function(fail){ 
      alert(JSON.stringify({message: "fail", value: fail})); 
});