2013-02-02 82 views
4

建立Facebook的登錄我一直在關注這裏列出來創建一個Facebook應用程序登錄的步驟: http://developers.facebook.com/docs/howtos/login/server-side-login/localhost上

而且是在第3步。我爲發展這一設置在本地主機上,然後我將使用不同的App ID發佈到Azure網站。我想先在localhost上工作。 (我還沒有嘗試這與非本地域名尚未。)

在我的Facebook應用程序配置頁面我已經設置了幾個相關的字段: 網站URL:http:// localhost:8052 /(空間添加允許submision堆棧溢出) 應用域名:localhost

main.php重定向到登錄頁面,如果沒有Facebook代碼集。這工作正常。

<head> 
<?php 
    if(!isset($_SESSION['code'])) { 
     echo ('<meta http-equiv="REFRESH" content="0;url=/login.php" />'); 
    } 
?> 
</head> 

login.php使用從他們的示例複製的代碼重定向到Facebook的登錄頁面。

<?php 

    include '/lib/url.php'; 

    $app_id = "XXXXX"; 
    $app_secret = "XXXXX"; 
    $my_url = CreateUrlForPage('welcome.php'); 

    session_start(); 

    $code = ''; 
    if(!isset($_REQUEST["code"])) { 
    $_SESSION['state'] = md5(uniqid(rand(), TRUE)); // CSRF protection 
    $dialog_url = "https://www.facebook.com/dialog/oauth?client_id=" 
     . $app_id . "&redirect_uri=" . urlencode($my_url) . "&state=" 
     . $_SESSION['state']; 

    echo $my_url.'<br/>'; 
    echo $dialog_url.'<br/>'; 
    echo("<script> top.location.href='" . $dialog_url . "'</script>"); 
    } 
?> 

很明顯我已經混淆了我的App ID上面。

由我「CreateUrlForPage」功能生成的URL看起來很好一樣Facebook登錄網址:

http://localhost:8052/welcome.php 
https://www.facebook.com/dialog/oauth?client_id=XXXX&redirect_uri=http%3A%2F%2Flocalhost%3A8052%2Fwelcome.php&state=XXXX 

(同樣,這裏有些混淆真正的價值看起來還好第一個是一個整數第二個是。 )

當我導航到http:// localhost:8052/login.php時,該頁面重定向到Facebook併發出完全無用的錯誤:「發生錯誤,請稍後再試。」

我看了一堆Stack Overflow上的其他帖子,但他們沒有解決我的問題。

錯誤我收到看起來就像這裏所描述的一個: Facebook application login error on localhost 提供的建議是設置域和站點URL,我已經做到了。

還有一個這個問題的鏈接:Running Facebook application on localhost 同樣,他們建議網站的URL。他們還討論了我使用的app-canvas,但我不明白它與登錄有什麼關係。

在設置網站URL和域名之前,我得到了一個不同的錯誤 - 一個告訴我需要設置網站URL。

回答

2

此代碼適合我。仔細檢查您的Facebook應用程序ID和我的網站的URL設置爲http://本地主機:8052 /並不真正需要爲登錄感謝

http://gamma.owlweb.com.ua/index.php/?route=account/register/fb

<?php 

$app_id = "xxx"; $app_secret = "xxx"; 
$my_url ="http://localhost:3080/abc.php"; 

session_start(); 

$code = '';  

if(!isset($_REQUEST["code"])) { 
    $_SESSION['state'] = md5(uniqid(rand(), TRUE)); // CSRF protection 
    $dialog_url = 
    "https://www.facebook.com/dialog/oauth?client_id=".$app_id 
    ."&redirect_uri=".urlencode($my_url) 
    ."&state=".$_SESSION['state']; 

    echo $my_url.'<br/>'; 
    echo $dialog_url.'<br/>'; 
    echo("<script> top.location.href='" . $dialog_url . "'</script>"); 
} 
?> 
+0

我想我是用是應用程序設置域名搗毀。我在Facebook上創建了一個新的應用程序,它運行良好。我使用的老版本是我大約10年前創建的,從未做過任何事情。可能從那時起改變了...... – MattD