1

Я использую элемент google-signin из Google Web Components, но я не знаю, как вернуть информацию о пользователе.google-signin не возвращает информацию о пользователе

<google-signin 
     client-id="{{my-id}}" scopes="email profile" 
     signed-in="{{signedIn}}"></google-signin> 

Я попытался написать некоторую функцию JS, но это не сработало.

function (signedIn) { 
     var profile = gapi.auth2.getAuthInstance().currentUser.get().getBasicProfile(); 
     console.log('Name: ' + profile.getName()); 
     console.log('Image: ' + profile.getImageUrl()); 
    } 

Извините, если это глупые вопросы, но я плохо разбираюсь в веб-разработке. Благодарим вас за советы.

ответ

3

Из полимерной документации:

The google-signin-success event is triggered when a user successfully authenticates and google-signin-failure is triggered when this is not the case. Both events will also provide the data returned by the Google client authentication process. You can also use isAuthorized attribute to observe authentication state.

Additional events, such as google-signout-attempted and google-signed-out are triggered when the user attempts to sign-out and successfully signs out.

The google-signin-necessary event is fired when scopes requested via google-signin-aware elements require additional user permissions.

https://elements.polymer-project.org/elements/google-signin

<google-signin ... id="myLoginIn"></google-signin> 
<script> 
    var t = document.querySelector('#t'); 

    t.addEventListener('google-signin-success', function(data) { 
    ... 
    }); 
</script> 

Или вы можете использовать:

<google-signin client-id="{{my-id}}" scopes="email profile" signed-in="{{signedIn}}"></google-signin> 

<google-signin-aware 
     scopes="{{scope}}" 
     signed-in="{{signedIn}}" 
     is-authorized="{{isAuthorized}}" 
     need-additional-auth="{{needAdditionalAuth}}" 
     on-google-signin-aware-success="handleSignIn" 
     on-google-signin-aware-signed-out="handleSignOut"></google-signin-aware> 

И тогда вы можете получить имя имя пользователя так:

var aware = document.querySelector('#awareness'); 
aware.handleSignIn = function(response) { 
     console.log('[Aware] Signin Response', response); 
     var userName = gapi.auth2.getAuthInstance().currentUser.get().getBasicProfile().getName(); 
}; 

Здесь вы можете найти полную демо-версию: https://github.com/GoogleWebComponents/google-signin/blob/master/demo/index.html

+0

Спасибо датчик, отличное объяснение. Я был успешным в работе и функционировании google-signin, когда я запускаю его в браузере, но когда я запускаю его на своем устройстве, я получаю следующее в handleSignIn: «Uncaught TypeError: Невозможно прочитать свойство currentUser 'из null" , Это происходит, когда я запускаю его через Android Studio или когда я создаю подписанный apk после изменения идентификатора моего клиента на Android. Любая помощь приветствуется. –

Смежные вопросы