2010-04-12 32 views
2

我們擁有支持多個網站的CMS,我們的功能之一允許我們的用戶(網站管理員)連接到網站Facebook帳戶以允許狀態更新,創建活動並上傳圖片在CMS中與從FB。使用Facebook API驗證使用不同域名的網站

驗證需要發生一次,因爲每個站點可能有多個站點管理員無法訪問站點FB用戶名和密碼。我們使用iframe並使用$ facebook-> require_login()進行身份驗證,將用戶重定向到FB登錄和身份驗證頁面。

所有這些工作都很好,但當用戶點擊「允許」時,身份驗證將會中斷,因爲它只會重定向到「Post-Authorize Redirect URL」字段中的任何內容,從而使該應用程序對於任何其他域在「授權後重定向URL」

我知道其他API的身份驗證方法(如Vimeo和YouTube)將允許您指定一個與「授權後重定向URL」等效的NEXT參數,並且可以設置它在運行時。

如何讓這項工作爲多個域名?

在這個問題上的任何暗示將有很大的幫助

回答

1

如果回撥頁面在您的域中,那麼該頁面可以充當代理,您只需傳遞代理頁面所需的參數即可將用戶重定向到正確的位置。例如,我使用了我想重定向的域名的URL和我需要的ID來知道我正在處理哪個用戶。

我的代碼最終看起來是這樣的:

授權鏈接:

$authorizeURL = " http://www.facebook.com/authorize.php?api_key= " . $facebookApiKey . "&v=1.0&ext_perm=status_update&domainName=$domainName&path=/path/to/my/next/page.php";

和 「代理」 代碼想是這樣的:



    $path = $_GET['path']; 
    $query = $_GET['query']; 
    $domainName = $_GET['domainName']; 

    //if you happen to have a query, get the values like this: 
    parse_str($query, $queryValues); 
    $id = $queryValues['id']; 

    // construct the url where your user came from or where you want them to be redirected. 
    $url = "http://$domainName/$path?$query"; 

    header("Location: " . $url); 
    exit; 


這是不是整個代碼,但它會給你一個關於如何去做的想法。

0

做只爲FB認證使用的分離域。

+0

謝謝你的回答。我正在考慮這樣做,儘管這不幸並不是解決這個問題最「優雅」的方案。 – Onema 2010-04-12 23:21:27

+0

我不明白這將如何解決問題? – 2010-05-24 14:25:55

+0

Paul,我已經添加了我爲這個問題和一些示例代碼實現的解決方案。 – Onema 2010-05-24 21:41:44

相關問題