Sitecore8 social connect не импортирует настроенные свойства профиля Facebook
Согласно этой статье: http://techmusingz.wordpress.com/2014/07/03/social-connected-with-sitecore-facebook-2-access-facebook-information/ я должен получить свойства, настроенные в Sitecore.Social.ProfileMapping.Facebook.config импортируется в SC Профиль пользователя:
Однако все, что я получаю, это:
fb_basicData_id: 100001964217563
fb_basicData_email: <hidden>@hotmail.com
fb_basicData_appKey: <hidden>
fb_basicData_appSecret: <hidden>
fb_basicData_accessTokenSecret: <hidden>
fb_lastRenewed: 20150106T013821Z
fb_fieldsLastRenewed: 20150105T234345Z
Как получить другие свойства для заполнения?
2 ответа
Начиная с версии 3.0, Social Connected сохраняет поля социальных профилей в контактных фасетах Sitecore xDB. Вот почему у вас их нет в профиле пользователя.
Чтобы получить обязательные поля, вы должны использовать Social Connected API. В частности, вы должны использовать метод GetSocialProfile класса SocialProfileManager, чтобы получить социальный профиль пользователя в определенной сети. И тогда у вас будет доступ ко всем полям социального профиля в свойстве Fields социального профиля. Пример:
var socialProfileManager = ExecutingContext.Current.IoC.Get<ISocialProfileManager>(); // or create it directly: new SocialProfileManager();
var socialProfile = socialProfileManager.GetSocialProfile(“userName”, “Facebook”);
var facebookGender = socialProfile.Fields[“fb_gender”];
Я боролся с той же проблемой на Sitecore 8. Действительно, основные данные из Facebook доступны с GetCustomProperty
функции, но остальные данные профиля впоследствии извлекаются и становятся доступными в SocialProfileManager.
Чтобы этот класс был доступен, не забудьте сослаться на Sitecore.Social.Api.dll и Sitecore.Social.Domain.dll в вашем проекте.
После этого fe:
string facebook_email = Sitecore.Context.User.Profile.GetCustomProperty("fb_basicData_email");
if (!String.IsNullOrEmpty(facebook_email))
{
email.Text = facebook_email; // update UI here
}
var socialProfile = new SocialProfileManager();
// Do we have an extra profile from the user?
if (socialProfile.SocialProfileExists(user.Name, "Facebook"))
{
var facebookProfile = socialProfile.GetSocialProfile(user.Name, "Facebook");
if (facebookProfile.Fields["fb_first_name"] != null)
{
// do something here
}
}