I am trying to write a rule that will return a user’s user_metadata to me in C# using the following code…
var claimsIdentity = User.Identity as ClaimsIdentity;
string accessToken = claimsIdentity?.FindFirst(c => c.Type == "access_token")?.Value;
string idToken = claimsIdentity?.FindFirst(c => c.Type == "id_token")?.Value;
AuthenticationApiClient client = new AuthenticationApiClient(new Uri(string.Format("https://{0}", ConfigurationManager.AppSettings["auth0:Domain"])));
var profile = await client.GetUserInfoAsync(accessToken);
I have been playing with rules to help with this, and every time I try to get the user_metadata property, it is null, even when my user has user_metadata. When just trying the following in a rule, I get no data…
function (user, context, callback) {
user.user_metadata = user.user_metadata || {};
console.log(user.user_metadata.test);
context.idToken['https://bzs-baplayground.auth0.com/user_metadata'] = user.user_metadata;
callback(null, user, context);
}
I am able to see the data if I set the properties in a rule, but not when attempting to just reading the data. This returns data to C#…
user.user_metadata.name = "Jane Doe";
user.user_metadata.given_name = "Jane";
user.user_metadata.family_name = "Doe";
auth0.users.updateUserMetadata(user.user_id, user.user_metadata)
.then(function() {
context.idToken['https://bzs-baplayground.auth0.com/user_metadata'] = user.user_metadata;
callback(null, user, context);
})
.catch(function (err) {
callback(err);
});
Thoughts as to why this is not working for me?