0

mean-stack 응용 프로그램에 login with Microsoft 단추를 추가하고 싶습니다. 그래서 나는 passport-microsoft을 사용하고있다.Microsoft 사용자의 전자 메일 주소 받기

passport.authenticate('microsoft', { scope: ['User.Read'] })를 사용하여, 나는이 정보를 얻을 수 : @odata.context, givenName, surname, displayNameid, userPrincipalName, businessPhones, jobTitle, mail, mobilePhone, officeLocation, preferredLanguage을. 내 mailnull 인 반면 내 userPrincipalName은 이메일 주소입니다.

다음과 같이 응용 프로그램을 설정했지만 passport.authenticate('microsoft', { scope: ['User.Read', 'email'] })으로 작성하면 인증에서 "잘못된 범위"오류가 발생합니다.

enter image description here

는 아는 사람 있나요 설정하는 방법 내 응용 프로그램과 사용자의 이메일 주소를 얻기 위해 요청에?

답변

0

당신이 the documentation for the user object 보면, 다음과 같은 찾을 수 있습니다 :

메일을

문자열

예를 들어 사용자의 SMTP 주소, " [email protected] "을 참조하십시오. 읽기 전용. $ filter를 지원합니다.

userPrincipalName 사용

문자열

사용자 주체 이름의 사용자 (UPN). UPN은 인터넷 표준 RFC 822를 기반으로하는 사용자의 인터넷 스타일 로그인 이름입니다. 규칙에 따라 사용자의 전자 메일 이름에 매핑해야합니다. 일반 형식은 alias @ domain입니다. 여기서 도메인은 거주자의 확인 된 도메인 모음에 있어야합니다. 사용자가 생성 될 때이 속성은 이 필요합니다. 임차인에 대해 확인 된 도메인은 조직의 verifiedDomains 속성에서 액세스 할 수있는 일 수 있습니다. $ filter 및 $ orderby를 지원합니다.

는 사용자를 만들 때 그것은 또한 필수 등록되지 않습니다 그래서 반드시 사용자의 이메일 주소를 표시하지 않는 mail 특성을 보이지만, Outlook 및 사무실 365 구체적으로 사용된다. 대신 userPrincipalName을 사용하여 사용자의 이메일을 보내야합니다.

오류 범위에 관해서는 전체 오류 메시지를 공유해야합니다.