Sitecore 7.2社交连接模块2.1 authResult =错误

时间:2016-05-16 08:26:18

标签: sitecore sitecore7 sitecore-social-connected

我在Sitecore 7.2上安装了社交连接模块2.1,然后我配置了配置文件映射,facebook app,一切进展顺利。

当我尝试使用"使用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 key)at   Sitecore.Social.Facebook.Networks.Providers.FacebookProvider.GetAccountBasicData(账户   帐户)   Sitecore.Social.Client.Api.ConnectorClientManager.Connect(账户   account,Boolean attachAccountToLoggedInUser,Boolean   isAsyncProfileUpdate)at   Sitecore.Social.Client.Api.Connector.ConnectorAuthCompleted.AuthCompleted(AuthCompletedArgs   参数)

然后我重新编译了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 个答案:

答案 0 :(得分:1)

是的,Sitecore Social Connected中使用的Facebook API已过时。 Facebook scope permissions列表已更改。在添加Facebook应用程序时我遇到了similar issue。我认为&#34;登录facebook&#34;渲染还向Facebook发送具有过期用户权限列表的请求。

答案 1 :(得分:0)

我遇到了与模块类似的问题,它是由用于社交API请求的过时SSL版本引起的。 Sitecore支持提供了解决此问题的修复程序。

答案 2 :(得分:0)

此问题的解决方案如下:

  1. 使用任何.net反射器,打开Sitecore.Socail.Facebook.Dll,从源代码创建一个项目。
  2. 通过添加必需的引用来修复项目中的错误。
  3. 转到FacebookProvider.cs中的此功能GetAccountBasicData
  4. 删除函数内的代码,并添加以下代码。

    字符串项;         Assert.IsNotNull(帐户,“帐户参数为空”);

        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;