重定向PHP页面没有加载,除非我打刷新
早上好,我终于设法Facebook的用户名存储在Facebook登录后,我的数据库。唯一的问题是,当用户重定向到后的Facebook登录需要重新加载页面(我得到的只是一个空白页第一次)。你可以请参考我以前的问题,因为我已经发布了所有代码there重定向PHP页面没有加载,除非我打刷新
更新:我注意到页面只需要第一次刷新(当用户信息尚未存储在数据库中时,那么它的快速和很好地加载页面,请帮助!;-)
UPDATE2:有没有一种方法来自动刷新页面(只是一次)后,新用户已被添加? 很多谢谢!
更新3:我张贴代码....当我刷新页面,它只能....任何想法?
<?php
mysql_connect('host', 'username', 'password');
mysql_select_db('table');
require 'library/facebook.php';
// Create our Application instance
$facebook = new Facebook(array(
'appId' => 'MYID',
'secret' => 'MYSECRET',
'cookie' => true));
// Get User ID
$user = $facebook->getUser();
if ($user) {
try {
// Proceed knowing you have a logged in user who's authenticated.
$user_profile = $facebook->api('/me');
} catch (FacebookApiException $e) {
error_log($e);
$user = null;
}
}else{
header('location: index.php');
}
$query = mysql_query("SELECT * FROM users WHERE oauth_provider = 'facebook' AND oauth_uid = ". $user_profile['id']);
$result = mysql_fetch_array($query);
if(empty($result)){
$query = mysql_query("INSERT INTO users (oauth_provider, oauth_uid, username) VALUES ('facebook', {$user_profile['id']}, '{$user_profile['name']}')");
$query = msyql_query("SELECT * FROM users WHERE id = " . mysql_insert_id());
$result = mysql_fetch_array($query);
}
if ($user) {
$paramsout = array('next'=>'http://www.mywebsite/test/logout.php');
$logoutUrl = $facebook->getLogoutUrl($paramsout);
}
?>
UPDATE 4 *****:我发现了一个解决方案。你可以看看我的答案。感谢大家。
我终于做到了。当然,这是一个重定向问题。但它并没有在index.php中加入sql,也没有在user_page.php中加入。 我最终装箱其中用户从Facebook页面重定向“的login.php”,添加到数据库中,如果它是一个新的记录,然后重定向到user_page.php。 这是login.php中的代码:
<?php
mysql_connect('HOST', 'USER', 'PSW');
mysql_select_db('MYDATABASE');
require 'library/facebook.php';
// Create our Application instance (replace this with your appId and secret).
$facebook = new Facebook(array(
'appId' => 'MYID',
'secret' => 'MYSECRET',
'cookie' => true));
// Get User ID
$user = $facebook->getUser();
if($user){
$user_profile = $facebook->api('/me');
$query = mysql_query("SELECT * FROM users WHERE oauth_provider = 'facebook' AND oauth_uid = ". $user_profile['id']);
$result = mysql_fetch_array($query);
if(empty($result)){
$query = mysql_query("INSERT INTO users (oauth_provider, oauth_uid, username) VALUES ('facebook', {$user_profile['id']}, '{$user_profile['name']}')");
header('Location: user_page.php');
}else{
header('Location: user_page.php');
}
}else{
header('Location: logout.php');
}
?>
我认为你必须更新你的脚本尝试加载或取$用户配置文件,而不是只加载用户..可能是它的工作原理
我认为这部分工作正常。我可以在我的数据库中添加用户。唯一的问题是,我需要在新用户登录时随时刷新页面。 – mat
当Facebook使用重定向未来或重定向URL将其发送后的数据将API获取,但是当你手动重定向你的网页也没有得到Facebook发布的数据,因此在else condition header('location: index.php');
的代码被执行,你是正确的重定向。
这个问题第一次是因为它通过else条件并去sql插入新记录,之后他们没有重定向..所以你需要把header('location: index.php');
最后重定向后用户记录插入db
希望这有助于
使用
header("Location: url");
exit();
之后的所有必要的行动,假设你不发送任何头到这一刻。否则,您可以在生成的文档中使用META REFRESH或JS document.location.href。
require 'lib/facebook-php-sdk/src/facebook.php';
define('APP_TITLE', 'Cool project');
define('APP_DESCRIPTION', 'Very nice project');
define('APP_ID', '168565339939940');
define('APP_SECRET', '4127eee9d3ab29a114e80h89060243a7');
define('APP_URL', 'https://localhost/project/');
define('APP_PERMISSIONS', '');
$user_id = null;
$user_profile = null;
$fb = new Facebook(array(
'appId' => APP_ID,
'secret' => APP_SECRET,
'cookie' => true,
));
$loginUrlParams = array(
'scope' => APP_PERMISSIONS,
'redirect_uri' => APP_URL,
);
$user_id = $fb->getUser();
if ($user_id)
{
try
{
$data = $fb->api('/me');
$user_profile = array(
'user_id' => $user_id,
'name' => isset($data['name']) ? he($data['name']) : null,
'avatar' => 'https://graph.facebook.com/'.$user_id.'/picture',
);
unset($data);
}
catch (FacebookApiException $e)
{
header('Location: ' . $fb->getLoginUrl($loginUrlParams));
exit;
}
}
else
{
header('Location: ' . $fb->getLoginUrl($loginUrlParams));
exit;
}
或者使用JavaScript或jQuery的,将告诉你在你没有运行时必须重定向
你想要的是你能不能请详细说明什么 –
我希望我的页面在登录后不需要重新加载。当用户从Facebook登录重定向到我的网页(user_page.php)我用身体的唯一背景颜色得到一个空白页。我必须按下重新加载按钮才能加载页面。我希望现在更清楚。我认为这个问题是由我的数据库查询在代码中的错误“位置”引起的,我无法弄清楚。 – mat
你的'user_page。php代码不完整,如果用户已经注册,会发生什么?没有?还为什么要求用户id两次'$ fbuid = $ facebook-> getUser();'? – ifaour