【发布时间】:2012-05-21 03:40:48
【问题描述】:
早上好,我终于在 Facebook 登录后将 Facebook 用户名存储在我的数据库中。唯一的问题是用户在 Facebook 登录后被重定向到的页面需要重新加载(我第一次得到一个空页面)。你可以参考我之前的问题吗,因为我已经发布了所有代码there
更新:我注意到页面只需要在第一次刷新(当用户信息尚未存储在数据库中时,它会快速而漂亮地加载页面。请帮助!;-)
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);
}
?>
更新 4*****:我找到了解决方案。你可以看看我下面的回答。谢谢大家。
【问题讨论】:
-
你到底想要什么,请详细说明
-
我希望我的页面在登录后不需要重新加载。当用户从 Facebook 登录重定向到我的页面 (user_page.php) 时,我得到一个只有正文背景颜色的空页面。我必须按下重新加载按钮才能加载页面。我希望现在更清楚了。我认为问题是由于我的数据库查询在我无法弄清楚的代码中的错误“位置”引起的。
-
您的
user_page.php代码不完整,如果用户已经注册会怎样?没有?还有为什么要两次询问用户ID$fbuid = $facebook->getUser();? -
感谢 Ifaour.... 我没有注意到我问了两次直到知道....;-)
-
刷新页面(以便实际加载)时,会显示什么?我看不到那里会输出的任何内容...您想在用户登录后立即注销他们吗? ://