2011-03-14 48 views
2

我正在PHP中開發一個小型CMS,我們正在進行社交集成。如何爲不同的網站使用相同的Facebook應用程序

的內容是由一個管理員誰出任右用於發佈新聞,事件等等......

我倒是添加此功能,當管理員發佈的東西,它已經在Facebook上發佈牆上改變。我對facebook php SDK不是很熟悉,我對此有點困惑。

如果(讓一個例子)10個不同的網站都在使用我的CMS,我必須創建10個不同的Facebook應用程序? (讓我們假設這10個網站都在不同的域和服務器)

2,有沒有一種方法用PHP進行身份驗證(如直接發送用戶名&密碼),以便用戶不需要登錄Facebook ?

謝謝

回答

1

http://developers.facebook.com/docs/閱讀起來。

它真的很簡單直接,很好地解釋。

你的問題是如此模糊和廣泛的,它不能很好地在這裏得到解答。

如果您遇到任何具體的實施問題,這是正確的地方。

但是回答你的問題的ATLEAST部分:

當Facebook應用程序的工作是圖形API的最有力的工具。

其原理很簡單。您可以代表任何用戶或應用程序進行任何操作。您必須首先生成標識用戶和適當權限的標記。這些令牌可以設置爲「永久」,因此您可以執行後臺任務。通常他們只在很短的時間內活躍,因此您可以在與用戶交互時執行操作。生成令牌的過程涉及用戶,以便他/她必須確認您要求的權限。

如果網站發佈自動東西你可能會產生永久的標記一個時間是活動的,只要你移除該應用在您的隱私設置。

宥基本上可以用在任何網站上的任何應用程序。沒有限制。但是有兩種生成令牌的方法。一個涉及額外的請求,一個是客戶端,它綁定到您的應用程序設置中指定的一個域oyu。

附錄:

@ArtoAle

你說得對每一個應用程序beeing assighend正好一個域。然而,一旦你獲得了一個有效的標記,它就不會影響你在圖表api中使用它的位置或用戶。

讓我這個expalin一點點:

它根本沒有任何意義,因爲它是你做的請求。沒有「請求來自何處」之類的東西。當然還有「引用者」標題信息,但它可以自由指定,並且不用於任何情況。

您在應用設置中輸入的域名僅限制Facebook將用戶重定向到的位置。

爲什麼?

這可以確保一些壞人無法在任何域上建立網站,並讓用戶授權應用程序並獲得您的應用程序的訪問令牌。

所以這個設置可以確保用戶和訪問令牌被重定向回你的站點而不是另一個不好的站點。

但有一個選擇。如果您使用桌面應用程序的控制流,則在用戶重新導回之後您不會獲得訪問令牌。你會得到一個臨時的SESSION-TOKEN,你可以通過EXCCHANGE獲得一個訪問令牌。這個交換是通過REST api完成服務器端的,並且需要你的應用程序保密。所以在這一點上,確保你得到了令牌。

此方法可以在任何域上完成,或者在沒有域的桌面應用程序的情況下完成。

這是從faceboo文檔報價:

要轉換的會話,發送POST 請求 https://graph.facebook.com/oauth/exchange_sessions 用逗號分隔的 會話列表要轉換:

捲曲的client_id = YOUR_APP_ID \ -F client_secret = your_app_secret \ -F會話= 2.DbavCpzL6Yc_XGEI0Ip9GA __。3600.1271649600-12345,2.aBdC ... \ https://graph.facebook.com/oauth/exchange_sessions 從該請求的響應是 順序相同的給定會話OAuth訪問令牌的 JSON數組:

[{ 「的access_token」: 「...」, 「過期」:1271649600, },...]

但是,您不需要這種方法,因爲它更復雜一點。爲了您的使用情況,我建議使用授權的中心點。

因此,您將指定您的ONE域名爲重定向網址。此網域不是在您的網站之間共享。您可以獲得完全有效的訪問令牌,並將用戶無縫重定向到您的特定項目網站並傳遞訪問令牌。

這樣,您就可以使用傳統的簡單的認證流程這大概也是更長遠的保障。

的事實依然存在。一旦訪問令牌生成後,您可以從任何域執行任何操作,但沒有區別,因爲它實際上不是來自請求的「域」(參見上文)。

除此之外,如果你想要一些很好的JavaScript功能工作 - 如評論框或類似按鈕,你需要正確設置open graph tags

如果你有一些執行上的問題或如你所說的「域錯誤」請更清楚地描述他們,包括你做的步驟,如果可能的錯誤消息。

+0

好的。我應該在我的答案中提到圖api。我默認了它的含義。我的錯。 – 2011-03-14 20:26:26

+0

「基本上yuo可以與任何網站上的任何應用程序一起工作」。糾正我,如果我錯了,我可以在任何網站上使用相同的fb應用程序,只要我有一個有效的身份驗證令牌? – ArtoAle 2011-03-14 20:30:44

+0

@ArtOle這是正確的。只有JavaScript認證流程綁定到域。但是您可以選擇使用桌面身份驗證流程,但它也可以通過Web訪問,但涉及附加的服務器端請求。如果您添加OG – 2011-03-14 21:27:32

3

你可能想把你的問題分解成更小的可理解的單位。很難理解你在駕駛什麼。

我你的問題的理解可能是最小的,但在這裏不用...

1_不,你不創建10個不同的Facebook應用程序。創建一個單一的Facebook應用程序,並使其成爲服務入口點。這樣你所有的CMS站點都可以與這個站點交談來與Facebook進行交互。 (REST服務層)。

2_ Facebook api不支持用戶名和密碼認證。他們只支持oauth2.0。儘管Oauth不是微不足道的,但是因爲他們提供了這個庫,所以實現身份驗證非常簡單。

+0

是啊,這是definetly凌亂,SRY了點。其實我真的不得不花費更多時間閱讀fb API文檔=) – ArtoAle 2011-03-14 20:31:33

相關問題