[英]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.