meteor account-github pkg не отображает имя пользователя после входа в систему

В моем метеорном приложении установлены следующие пакеты:

accounts-github 1.3.0
accounts-password 1.4.0
accounts-ui 1.1.9
github-config-ui 1.0.0

Я отображаю меню входа с помощью {{> loginButtons}}

Если я вхожу в систему, используя стандартное имя пользователя и пароль, он правильно отображает имя пользователя после входа в систему. Если я вхожу в систему, используя github, он успешно входит в систему, но не отображает никакого имени пользователя. Единственное, что появляется, это стрелка раскрывающегося списка. Нажав на нее, вы увидите кнопку выхода.

Это код конфигурации моей учетной записи.

Accounts.ui.config({
passwordSignupFields: "USERNAME_AND_EMAIL"
});

person mrcodeberg    schedule 14.08.2017    source источник
comment
Можете ли вы попробовать запустить Meteor.user() в консоли браузера, чтобы увидеть, как сервер возвращает имя пользователя для двух случаев: 1. вход с использованием имени пользователя и пароля и 2. вход с использованием github?   -  person sonlexqt    schedule 15.08.2017
comment
стандартный вход = Meteor.user().username и вход github = Meteor.user().services.github.username.   -  person mrcodeberg    schedule 15.08.2017
comment
Я смотрю на исходный код accounts-ui и вижу эту строку: github.com/meteor/meteor/blob/devel/packages/. По-видимому, accounts-ui не получает имя пользователя ни от чего, подобного Meteor.user().services.github.username, поэтому displayName возвращает пустую строку. Я думаю, чтобы решить эту проблему, вы должны самостоятельно обрабатывать отображение имени пользователя и не использовать accounts-ui.   -  person sonlexqt    schedule 15.08.2017


Ответы (1)


Если вам нужно, чтобы поле user.username было именем пользователя Github из поля user.services.github.username. Вы можете сделать это внутри функции onCreateUser.

 Accounts.onCreateUser((options, user) => {
    user.profile = options.profile;

    // If signed in with github
    if (user.services.github) {
        user.username = user.services.github.username
    }

    return user;
 });

Этот код должен быть на стороне сервера, а не внутри Meteor.startup().

person Gaëtan Rouziès    schedule 15.08.2017