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
    }
}
Другие вопросы по тегам