我正在嘗試設置基本登錄w/Facebook按鈕。正確的Facebook PHP SDK登錄路線
這基本上就是我複製: 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的代碼,但我無法弄清楚這是否也可能是我的問題的一部分。我不會假設,但我想我會在這裏寫一張便條。
_「我得到一個‘對不起,該網頁無法使用’消息」 _ - 哪裏的?這是您的應用程序明確輸出的消息嗎?或者你只是指瀏覽器的默認錯誤頁面?檢查瀏覽器的開發工具網絡面板中發生了什麼 - 您是否看到500或其他服務器端錯誤?去檢查服務器的日誌文件。 – CBroe
@CBroe這是我重定向到由SDK生成的URL時得到的消息。 http://i.imgur.com/XWhpDpb.png – Jeff