我正在使用以下代码来验证使用Microsoft帐户登录的Firebase用户:
x y
10 10
27.5 10
45 10
...
75 6
77 6
79 6
80 5
81 5
82 5
但是,当我尝试使用以下代码访问用户的电子邮件时:
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;
// ...
});
}
“ user.email”条目设置为null。如何启用Firebase以这种方式访问Microsoft帐户的电子邮件,以便将“ user.email”设置为用户的电子邮件?
答案 0 :(得分:1)
我尝试过。
我可以获取电子邮件地址。
请参阅:
这时,对应用程序的初始同意将自动包含offline_access(“保持对您有权访问的数据的访问”)和user.read(“登录并阅读您的个人资料”)权限。这些权限通常是应用程序正常运行所必需的-offline_access使应用程序可以访问刷新令牌,这对于本机和Web应用程序至关重要,而user.read则可以访问子声明,从而允许客户端或应用程序随着时间的推移正确识别用户,并访问基本的用户信息
重要当前,Microsoft身份验证库(MSAL)当前默认在授权和令牌请求中指定offline_access,openid,配置文件和电子邮件。这意味着,在默认情况下,如果您明确指定这些权限,则Azure AD可能会返回错误。
provider.addScope();
是不必要的。
请尝试注释掉或删除provider.addScope();
// provider.addScope('openid');
// provider.addScope('email');
您应该检查Microsoft应用程序设置。
Microsoft Graph权限>委派的权限设置为User.Read。?
备注:
以下文档中的 provider.addScope('mail.read');
允许该应用读取用户邮箱中的电子邮件。
不允许该应用读取用户的电子邮件地址。