我正在使用MSAL.js,并成功地使用Facebook作为身份提供者,在Azure AD B2C中登录/注册用户。问题是,在登录后,我无法检索到用户的个人资料图片。
Azure AD B2C返回一个与用户Facebook ID没有关联的对象标识符。
我正在使用MSAL.js,并成功地使用Facebook作为身份提供者,在Azure AD B2C中登录/注册用户。问题是,在登录后,我无法检索到用户的个人资料图片。
Azure AD B2C返回一个与用户Facebook ID没有关联的对象标识符。
使用自定义策略,您可以检索Facebook用户的图片字段,然后在ID令牌中发出图片声明,具体如下。
1:按照社交帐户策略(例如SocialAndLocalAccounts)之一完成Azure Active Directory B2C:开始使用自定义策略步骤。
2:在扩展文件中声明“picture”声明:
<ClaimType Id="picture">
<DisplayName>Picture</DisplayName>
<DataType>string</DataType>
</ClaimType>
3:在扩展策略中,将“picture”字段添加到“ClaimsEndpoint”元数据项和“Facebook-OAUTH”技术配置文件的“picture”输出声明中:
<ClaimsProvider>
<DisplayName>Facebook</DisplayName>
<TechnicalProfiles>
<TechnicalProfile Id="Facebook-OAUTH">
<Metadata>
<Item Key="client_id">facebook_clientid</Item>
<Item Key="scope">email public_profile</Item>
<Item Key="ClaimsEndpoint">https://graph.facebook.com/me?fields=id,first_name,last_name,name,email,picture</Item>
</Metadata>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="picture" PartnerClaimType="picture" />
</OutputClaims>
</TechnicalProfile>
</TechnicalProfiles>
</ClaimsProvider>
4:在注册或登录依赖方策略中发布“picture”声明:
<RelyingParty>
<DefaultUserJourney ReferenceId="SignUpOrSignIn" />
<TechnicalProfile Id="PolicyProfile">
<DisplayName>PolicyProfile</DisplayName>
<Protocol Name="OpenIdConnect" />
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="displayName" />
<OutputClaim ClaimTypeReferenceId="givenName" />
<OutputClaim ClaimTypeReferenceId="surname" />
<OutputClaim ClaimTypeReferenceId="email" />
<OutputClaim ClaimTypeReferenceId="picture" />
<OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub"/>
<OutputClaim ClaimTypeReferenceId="identityProvider" />
</OutputClaims>
<SubjectNamingInfo ClaimType="sub" />
</TechnicalProfile>
</RelyingParty>