Получение электронной почты от пользователя в Firebase Аутентификация учетной записи Microsoft - PullRequest
0 голосов
/ 14 апреля 2019

Я использую следующий код для аутентификации пользователя Firebase, который входит в систему с учетной записью Microsoft:

  signInMicrosoft = () => {
    var provider = new firebase.auth.OAuthProvider('microsoft.com');
    provider.addScope('openid');
    provider.addScope('email');
    firebase
      .auth()
      .signInWithPopup(provider)
      .then(
        function(result) {
          console.log('result', result)
          var token = result.credential.accessToken;
          var user = result.user;
          var isNewUser = result.additionalUserInfo.isNewUser;
          //window.location.href = "/";
        }.bind(this)
      )
      .catch(function(error) {
        // Handle Errors here.
        var errorCode = error.code;
        var errorMessage = error.message;
        this.setState({
          loginError: true
        });
        // The email of the user's account used.
        var email = error.email;
        // The firebase.auth.AuthCredential type that was used.
        var credential = error.credential;
        // ...
    });
  }

Однако, когда я пытаюсь получить доступ к электронной почте пользователя с помощью следующего кода:

firebase.auth().onAuthStateChanged(user => {
  console.log('user', user) 
});

Запись user.email имеет значение null.Как я могу включить Firebase для доступа к электронной почте учетной записи Microsoft таким образом, чтобы «user.email» был настроен на электронную почту пользователя?

1 Ответ

1 голос
/ 15 апреля 2019

Я пытался.

Я мог бы получить адрес электронной почты.

См:

В настоящее время разрешения offline_access («Поддерживать доступ к данным, к которым вы предоставили ему доступ») и user.read («Вход в систему и читать свой профиль») автоматически включаются в первоначальное согласие приложения. Эти разрешения обычно требуются для обеспечения надлежащей функциональности приложения - offline_access предоставляет приложению доступ к токенам обновления, критически важным для нативных и веб-приложений, а user.read предоставляет доступ к вложенной заявке, позволяя клиенту или приложению правильно идентифицировать пользователя с течением времени и доступ к элементарной пользовательской информации

Важно Библиотека аутентификации Microsoft (MSAL) в настоящее время задает offline_access, openid, profile и email по умолчанию в запросах авторизации и токена. Это означает, что для случая по умолчанию, если вы укажете эти разрешения явно, Azure AD может вернуть ошибку.

provider.addScope(); не обязательно.

Пожалуйста, попробуйте закомментировать или удалить provider.addScope();

    // provider.addScope('openid');
    // provider.addScope('email');

И вам следует проверить настройки приложений Microsoft.

Microsoft Graph Permissions> Делегированные разрешения устанавливают User.Read.?

Примечания:

provider.addScope('mail.read'); в следующей документации позволяет приложению читать электронную почту в почтовых ящиках пользователей. Не позволяет приложению читать адрес электронной почты пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...