Sitecore 7.2 社交连接模块 2.1 authResult=error
Sitecore 7.2 Social Connected Module 2.1 authResult=error
我已经在 Sitecore 7.2 上安装了社交连接模块 2.1,然后配置了配置文件映射、facebook 应用程序,一切顺利。
当我尝试使用 "Login with facebook" 渲染登录时,我被重定向到带有错误查询字符串的同一页面:
http://sc72rev151021.com/registration?authResult=error_9ffsede-dsdf6-4f50-9b6a-asdasdasd
我检查了日志文件,发现了这个错误:
28144 10:24:36 ERROR The error in ConnectManager occured Exception:
Sitecore.Social.Infrastructure.Exceptions.SocialException Message: The
given key was not present in the dictionary.
Nested Exception
Exception: System.Collections.Generic.KeyNotFoundException Message:
The given key was not present in the dictionary. Source: mscorlib
at System.Collections.Generic.Dictionary`2.get_Item(TKey key) at
Sitecore.Social.Facebook.Networks.Providers.FacebookProvider.GetAccountBasicData(Account
account) at
Sitecore.Social.Client.Api.ConnectorClientManager.Connect(Account
account, Boolean attachAccountToLoggedInUser, Boolean
isAsyncProfileUpdate) at
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 密钥?
谢谢
是的,Sitecore Social Connected 中使用的 Facebook API 已过时。 Facebook scope permissions list was changed. I faced with similar issue 添加 Facebook 应用程序时。我认为 "Login with facebook" 渲染也会向 Facebook 发送带有过时用户权限列表的请求。
我遇到过类似的模块问题,这是由用于社交 API 请求的过时 SSL 版本引起的。 Sitecore 支持提供了解决此问题的修复程序。
此问题的解决方案如下:
- 使用任何 .net 反射器,打开 Sitecore.Socail.Facebook.Dll,从源代码创建一个项目。
- 通过添加所需的引用来修复项目中的错误。
- 转到 FacebookProvider.cs
中的函数 GetAccountBasicData
删除函数内的代码,并添加以下代码。
字符串项;
Assert.IsNotNull(账户,"Account parameter is 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;
我已经在 Sitecore 7.2 上安装了社交连接模块 2.1,然后配置了配置文件映射、facebook 应用程序,一切顺利。
当我尝试使用 "Login with facebook" 渲染登录时,我被重定向到带有错误查询字符串的同一页面:
http://sc72rev151021.com/registration?authResult=error_9ffsede-dsdf6-4f50-9b6a-asdasdasd
我检查了日志文件,发现了这个错误:
28144 10:24:36 ERROR The error in ConnectManager occured Exception: Sitecore.Social.Infrastructure.Exceptions.SocialException Message: The given key was not present in the dictionary.
Nested Exception
Exception: System.Collections.Generic.KeyNotFoundException Message: The given key was not present in the dictionary. Source: mscorlib
at System.Collections.Generic.Dictionary`2.get_Item(TKey key) at Sitecore.Social.Facebook.Networks.Providers.FacebookProvider.GetAccountBasicData(Account account) at Sitecore.Social.Client.Api.ConnectorClientManager.Connect(Account account, Boolean attachAccountToLoggedInUser, Boolean isAsyncProfileUpdate) at 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 密钥?
谢谢
是的,Sitecore Social Connected 中使用的 Facebook API 已过时。 Facebook scope permissions list was changed. I faced with similar issue 添加 Facebook 应用程序时。我认为 "Login with facebook" 渲染也会向 Facebook 发送带有过时用户权限列表的请求。
我遇到过类似的模块问题,这是由用于社交 API 请求的过时 SSL 版本引起的。 Sitecore 支持提供了解决此问题的修复程序。
此问题的解决方案如下:
- 使用任何 .net 反射器,打开 Sitecore.Socail.Facebook.Dll,从源代码创建一个项目。
- 通过添加所需的引用来修复项目中的错误。
- 转到 FacebookProvider.cs 中的函数 GetAccountBasicData
删除函数内的代码,并添加以下代码。
字符串项; Assert.IsNotNull(账户,"Account parameter is 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;