2016-05-16 50 views
1

我已經在Sitecore 7.2上安裝社交連接模塊2.1,然後我配置了配置文件映射,Facebook應用程序,一切進展順利。Sitecore 7.2社交連接模塊2.1 authResult =錯誤

當我嘗試使用「登錄與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密鑰?

謝謝

+0

你能提供Facebook頁面的URL上,你只是想登錄後重定向?我想它會傳遞過時的權限範圍。 – Anton

+0

謝謝安東的幫助,第一件事是用戶在這個頁面http://sc72rev151021.com/registration然後他試圖登錄使用Facebook渲染,然後他將重定向到相同的頁面http://sc72rev151021.com/註冊?authResult = error_9ffsede-dsdf6-4f50-9b6a-asdasdasd –

+0

在你提到的兩頁之間應該有一個到Facebook的中間請求。在瀏覽器中使用Fiddler或開發人員工具的網絡面板來獲取它。 – Anton

回答

0

此問題的解決方案如下:

  1. 使用任何.NET反射器,打開Sitecore.Socail.Facebook.Dll,建立從源代碼的項目。
  2. 通過添加所需的引用來修復項目中的錯誤。
  3. 轉到此函數FacebookProvider.cs中的GetAccountBasicData
  4. 刪除函數中的代碼,並添加下面的代碼。

    string item; 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; 
    
1

是的,在Sitecore Social Connected中使用的Facebook API已過時。 Facebook scope permissions列表已更改。我在添加Facebook應用程序時遇到了similar issue。我認爲「使用臉書登錄」渲染也向Facebook發送了過期的用戶權限列表請求。

+1

我做了逆向工程。我得到了IL代碼(使用ILDASM),更新了新的權限。從IL代碼(使用ILASM)新的DLL,它適用於我。 – Anton

+0

這就是我想的,我會檢查你的帖子。非常感謝 ! –

0

我有類似的問題與模塊,它是由過時的SSL版本用於社會API請求。 Sitecore支持提供瞭解決這個問題的解決方案。