2010-07-20 100 views
0

我有一個網站,我與Facebook整合(通過FBML - 的JavaScript API)。ASP.NET跨域餅乾和Facebook連接

我已經安裝在Facebook上的應用程序按正常,指定「連接網址」是我的網站的域名。

但是,我的應用程序在同一網站的IIS中有多個綁定

如:

www.bar.com.au

foo.com.au

的結構域是完全不同的,在任何名字沒有關係 - 因此正則表達式規則是不可能的(即基本域)。由於本地化和市場營銷的結合,這些領域變得不同。請記住,這些域名已融入到已經存在的網站中,換句話說,我無法更改此架構。

有沒有一種方法,我可以爲「連接URL」指定BOTH在ONE Facebook應用程序設置這些域的的?或者我將不得不創建多個應用程序?

當然作爲綁定不在同一子域我不能使用「基礎域」設置。

實際上我在我的網站大約7綁定 - 所以我寧願沒有建立獨立的7個Facebook應用程序 - 因爲這意味着保持7套API密鑰/祕密對我的應用程序。

alt text http://www.freeimagehosting.net/uploads/268b234e2f.png

發生了什麼事,當然是當foobar.com.au IM,Facebook的cookie是不可用的域。

對於此期間,我會嘗試創建多個ApiKey的 - 但我想我可能會遇到的問題。我將不得不去:「如果域名是這個,請使用這個ApiKey」,然後在Graph API的每次調用中使用相同的邏輯。雜亂的東西。

所以我想我的問題不是由Facebook Connect引起的,它是由設計的HTTP Cookies性質引起的。

我怎麼能輕鬆地訪問這些cookie跨域?我需要設置一個第三個網站並指導所有cookie的邏輯到那裏?

回答

0

在我目前的情況下,時間表已經阻止我做出正確的解決方案,這正是@Yuliy所強調的。

現在,我已經創建了多個Facebook應用程序。但要保持乾燥,我已經提取的所有遠落後公開的屬性:

private static string _ApiToken_Site1, _ApiToken_Site2; 
public static string ApiToken 
{ 
    get 
    { 
     if (Site1) return _ApiToken_Site1; 
     else if (Site2) return _ApiToken_Site2; 
    } 
} 

不完全是乾淨的,但主要的是,我沒有碰我現有的代碼在所有的智慧去尋找哪些要使用的Api密鑰在該屬性中。

對於我們的下一個項目版本,我將廢除這個,最有可能實現一個WCF/ASMX Web服務來處理來自一個地方的身份驗證(即單獨的Web服務在單獨的域)。

0

您可以將其中一個設置爲您的「Facebook身份驗證」站點,並將所有FB Auth相關的流量定向到那裏,然後使用大量跨站點通信技巧之一將令牌發送到原創網站?

換句話說,無論他們來自哪個網站,都會使用.foobar.com.au(例如)作爲重定向URI。然後,當他們進入該網站並注意到他們來自.foo.bar.com.au時,您將他們重定向回他們來自的地方,以某種跨域方式傳遞訪問令牌(querystring,post變種等)

+0

請您詳細說明一下嗎?另外請注意,即時通訊使用JavaScript API進行身份驗證 - 所以我需要訪問域中的cookie。 – RPM1984 2010-07-20 05:20:54

+0

是的..我真的很困惑這個答案也。你能詳細說明你的意思嗎?什麼是*跨網站溝通技巧*? – 2010-07-22 03:42:39

+0

跨站點溝通技巧涉及使用某種機制將數據從一個站點傳遞到另一個站點,這是相同的原始策略應該使問題變得更加困難。一種技術是跨站點POST請求(又名錶單提交)。另一個是在查詢字符串中使用訪問令牌進行重定向。 – Yuliy 2010-07-22 07:29:41

0

如果你想要*.foobar.com.au被允許,那麼設置你的基本域foobar.com.au

+1

編輯的問題 - 域名並不總是包含Foobar。這就是當你「過度使用」代碼時發生的事情,哈哈。 – RPM1984 2010-07-20 10:15:51

+0

我可以問你有多個基本域的用例嗎? – daaku 2010-07-20 17:09:12

+0

我們針對不同的語言環境有我們網站的多個版本。所以在澳大利亞,我們的域名可能是australia.foo.bar.com,在美國它可能是www.foobar.com。 這些領域不會有機會 - 它們已經以這種方式銷售,所以現在不能改變它們。 – RPM1984 2010-07-21 05:47:36