Sitecore 7.2 Social Connected Module 2.1 authResult= ошибка
Я установил модуль социальной связи 2.1 на Sitecore 7.2, затем настроил отображение профиля, приложение facebook, все шло хорошо.
Когда я пытаюсь войти с помощью рендеринга "Войти через Facebook", я получаю перенаправление на ту же страницу со строкой запроса об ошибке:
http://sc72rev151021.com/registration?authResult=error_9ffsede-dsdf6-4f50-9b6a-asdasdasd
Я проверил файл журнала и вижу эту ошибку:
28144 10:24:36 ОШИБКА Произошла ошибка в ConnectManager Исключение: Sitecore.Social.Infrastructure.Exceptions.SocialException Сообщение. Указанный ключ отсутствует в словаре.
Вложенное исключение
Исключение: System.Collections.Generic.KeyNotFoundException Сообщение: указанный ключ отсутствует в словаре. Источник: mscorlib
в System.Collections.Generic.Dictionary`2.get_Item(ключ TKey) в Sitecore.Social.Facebook.Networks.Providers.FacebookProvider.GetAccountBasicData(учетная запись) в Sitecore.Social.Client.Api.ConnectorClientManager.Connect(учетная запись, Boolean attachAccountToLoggedInUser, Boolean isAsyncProfileUpdate) в Sitecore.Social.Client.Api.Connector.ConnectorAuthCompleted.AuthCompleted(AuthCompletedArgs args)
Затем я перекомпилировал библиотеки DLL, и здесь происходит сбой кода (следующий фрагмент кода из Sitecore.Social.Facebook.dll):
public AccountBasicData GetAccountBasicData(Account account)
{
Assert.IsNotNull(account, "Account parameter is null");
IDictionary<string, object> accountData = this.GetAccountData(account, "/me");
if (accountData == null)
{
return null;
}
string str = string.Concat(accountData["first_name"], " ", accountData["last_name"]);
AccountBasicData accountBasicDatum = new AccountBasicData()
{
Account = account,
Id = accountData["id"] as string,
Email = accountData["email"] as string,
FullName = str
};
return accountBasicDatum;
}
private IDictionary<string, object> GetAccountData(Account account, string access)
{
return this.FacebookRequest(account, access, null, (FacebookClient facebookClient, string feedPath, object inputParams) => facebookClient.Get(feedPath) as IDictionary<string, object>);
}
Любая идея? Этот модуль зависит от устаревших ключей facebook?
Спасибо
3 ответа
Решение этой проблемы заключается в следующем:
- Используйте любой отражатель.net, откройте Sitecore.Socail.Facebook.Dll, создайте проект из исходного кода.
- Исправьте ошибки в проекте, добавив необходимые ссылки.
- Перейти к этой функции GetAccountBasicData в FacebookProvider.cs
Удалите код внутри функции и добавьте следующий код.
строковый элемент; Assert.IsNotNull(account, "Параметр Account имеет значение null");
IDictionary<string, object> accountData = this.GetAccountData(account, "/me"); if (accountData == null) { return null; } string str = string.Concat(accountData["name"]); AccountBasicData accountBasicDatum = new AccountBasicData() { Account = account, Id = accountData["id"] as string }; AccountBasicData accountBasicDatum1 = accountBasicDatum; if (accountData.ContainsKey("email")) { item = accountData["email"] as string; } else { item = null; } accountBasicDatum1.Email = item; accountBasicDatum.FullName = str; return accountBasicDatum;
Да, API Facebook, используемый в Sitecore Social Connected, устарел. Список разрешений в Facebook был изменен. Я столкнулся с подобной проблемой при добавлении приложения Facebook. Я думаю, что рендеринг "Войти через Facebook" также отправляет запрос в Facebook с устаревшим списком разрешений пользователей.
У меня была похожая проблема с модулем, и она была вызвана устаревшей версией SSL, используемой для запросов социальных API. Поддержка Sitecore предоставила исправление, которое решило эту проблему.