2012-01-18 40 views
0

感謝您的閱讀!這就是我所要做的。爲什麼在從WordPress插件內進行身份驗證時,Facebook後端返回0作爲用戶ID?

我在寫一個WordPress插件,它使用了Facebook的provides的PHP SDK(最新版本3.1.1)。我的應用程序在Facebook上註冊爲一個網站,因爲它實際上就像一個網站,即使它嵌入在WordPress中。

該SDK附帶了一個非常簡單易懂的example.php。如果我把這個文件放在我的服務器上,它就可以工作。我確保證書文件和SDK文件位於正確的位置,並且可以通過腳本訪問。但是,如果我在WordPress插件(從插件的管理頁面)中執行完全相同的操作,則Facebook後端將不會返回用戶標識,而是始終返回0。 FB返回0的問題很常見,但其原因似乎有很大差異。我不得不提到,這種行爲並不總是這樣。它幾個星期前就開始了。我懷疑FB後端以某種方式檢查間接API調用,並且從WordPress插件調用它似乎以某種方式違反了FB授權規則(CSRF問題?)。但我不確定。

有沒有人知道這裏發生了什麼?

回答

0

這裏是我的猜測:

Facebook將無法訪問你的WordPress博客的後臺,因爲它需要驗證。所以example.php代碼不會從WordPress管理面板中看到。

當您的服務器原始服務器上,沒有這樣的訪問控制和Facebook能夠訪問該頁面。

如果是這種情況,我的建議是將其轉換爲非管理插件,也許通過使用WP_Rewrite class添加重寫規則。

+0

感謝您的立即回答!我想知道的是,如果是這樣的話,那麼爲什麼它會在兩週前工作?從WP插件的PHP腳本中調用FB時,FB真的需要訪問WP後端嗎?你能爲我解釋這個技術嗎?我希望我可以像你說的那樣解決這個問題,但是我不能把它變成一個非管理插件,因爲這是插件的重點,它是針對博主的。 – twigmac 2012-01-18 23:35:41

+0

當您登錄w/a用戶名並通過時,WordPress會刪除一些cookie(http://codex.wordpress.org/WordPress_Cookies),以便它將您識別爲登錄用戶。如果WordPress只允許任何機器人訪問您的後端,任何人都可以更改或銷燬您的安裝。 Facebook沒有進行身份驗證,因此在請求您的管理頁面時沒有cookie,所以WP會引發錯誤。當你服務example.php raw時,WordPress根本不參與 - Facebook直接與你的服務器通話。 – buley 2012-01-19 16:42:51

+0

感謝您的詳細解釋。現在我覺得FB需要請求管理頁面作爲認證過程的一部分,這似乎更合理。我仍然想知道爲什麼最初工作。它應該總是產生錯誤 - 但沒有。 我會嘗試通過URL重寫來解決它。 謝謝! – twigmac 2012-01-20 17:32:09

相關問題