簡體   English   中英

正確的Facebook PHP SDK登錄路線

[英]Proper Facebook PHP SDK login route

我正在嘗試設置帶有Facebook按鈕的基本登錄。

這基本上就是我要復制的內容: https : //developers.facebook.com/docs/php/howto/example_facebook_login

唯一的區別是,我試圖將所有內容都設置在一個文件中(這樣我就可以將所有社交登錄代碼都保留在一個位置),並且我希望創建鏈接並將用戶重定向到一個目錄中。

當我點擊由處理程序生成的頁面時,我收到“抱歉此頁面不可用”消息。

Twitter流程基本上是相同的(它是完整的並且可以正常運行)。 我確實將oauth令牌保存到了數據庫中,而對於Facebook部分,我還沒有做過。 它會保存保存表,我只是保存oauth提供者或其他東西以及令牌。

這是要點:

switch(strtolower($_REQUEST['method'])) {    
case 'twitter':
    /*ommited, but it's basically the same flow*/
    break;

case 'facebook':
    // if we don't have a step, we don't know what to do
    if (!isset($_REQUEST['step'])) {
        die('Fail: invalid step: (none)');
    }

    // we'll be using the Facebook PHP SDK
    require(FACEBOOK_SDK_PATH);

    switch(strtolower($_REQUEST['step'])) {
        case 1:
            // instantiates a new SDK App object
            $fb = new Facebook\Facebook([
                'app_id' => FACEBOOK_APP_ID,
                'app_secret' => FACEBOOK_APP_SECRET,
                'default_graph_version' => '2.0'
            ]);

            // gets helper
            $helper = $fb->getRedirectLoginHelper();

            // optional permissions parameter
            // we want the users email address
            $permissions = ['email'];

            // generates the url for the user to authorize access
            $loginUrl = $helper->getLoginUrl('http://localhost/social-login.php?method=facebook&step=2', $permissions);

            // redirect user
            header('Location: ' . $loginUrl);

            break;

        case 2:
            // this should include an access token so we can get information about the user and consider them authenticated
            echo '<pre>';
            var_dump($_SESSION);
            var_dump($_REQUEST);
            echo '</pre>';
            die();

            break;

        default:
            die('Fail: invalid step: ' . $_REQUEST['step']);
    }
    break;

default:
    die('Fail: invalid method . ' . $_REQUEST['method']);
}

我已經翻閱了上面的文檔,只是無法弄清丟失了什么。 可以在應用程序端進行設置嗎? 本地主機回調有問題嗎?

我將默認圖形版本與應用程序設置為(2.0)的任何版本匹配。 我不確定是否可以更改它,但是我看到了很多使用2.2和2.5的代碼,而且我也不知道這是否可能是我的問題的一部分。 我不這么認為,但想想我會在這里寫個便條。

$fb = new Facebook\Facebook([
    'app_id' => FACEBOOK_APP_ID,
    'app_secret' => FACEBOOK_APP_SECRET,
    'default_graph_version' => '2.0'
]);

您指定的API版本錯誤,因此SDK創建了錯誤的登錄對話框URL。

您需要包括v

    'default_graph_version' => 'v2.0'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM