我正在尝试设置基本登录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