我的index.php文件包含:
<div id="fb-root"></div>
<script type="text/javascript">
window.fbAsyncInit = function () {
FB.init({
appId: '<?php echo $appId; ?>',
cookie: true,
xfbml: true,
channelUrl: '<?php echo $return_url; ?>channel.php',
oauth: true
});
};
(function () {
var e = document.createElement('script');
e.async = true;
e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
document.getElementById('fb-root').appendChild(e);
}());
function CallAfterLogin() {
FB.login(function (response) {
if (response.status === "connected") {
LodingAnimate(); //Animate login
FB.api('/me', function (data) {
if (data.email == null) {
//Facbeook user email is empty, you can check something like this.
alert("You must allow us to access your email id!");
ResetAnimate();
} else {
AjaxResponse();
}
});
}
}, {
scope: '<?php echo $fbPermissions; ?>'
});
}
//functions
function AjaxResponse() {
//Load data from the server and place the returned HTML into the matched element using jQuery Load().
$("#results").load("process_facebook.php");
}
//Show loading Image
function LodingAnimate() {
$("#LoginButton").hide(); //hide login button once user authorize the application
$("#results").html('<img src="img/ajax-loader.gif" /> Please Wait Connecting...');
}
//Reset User button
function ResetAnimate() {
$("#LoginButton").show(); //Show login button
$("#results").html(''); //reset element html
}
</script>
process_facebook.php include
if(!empty($_SERVER['HTTP_X_REQUESTED_WITH'])&&strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest' )
{
//initialize facebook sdk
$facebook = new Facebook(array(
'appId' = > $appId,
'secret' = > $appSecret, ));
$fbuser = $facebook - > getUser();
if ($fbuser) {
try {
// Proceed knowing you have a logged in user who's authenticated.
$me = $facebook - > api('/me'); //user
$uid = $facebook - > getUser();
} catch (FacebookApiException $e) {
//echo error_log($e);
$fbuser = null;
}
}
// redirect user to facebook login page if empty data or fresh login requires
if (!$fbuser) {
$loginUrl = $facebook - > getLoginUrl(array('redirect_uri' = > $return_url, false));
header('Location: '.$loginUrl);
}
//user details
$fullname = $me['first_name'].' '.$me['last_name'];
$email = $me['email'];
/* connect to mysql using mysqli */
$mysqli = new mysqli($hostname, $db_username, $db_password, $db_name);
if ($mysqli - > connect_error) {
die('Error : ('.$mysqli - > connect_errno.') '.$mysqli - > connect_error);
}
//Check user id in our database
$UserCount = $mysqli - > query("SELECT COUNT(id) as usercount FROM usertable WHERE fbid=$uid") - > fetch_object() - > usercount;
在此之后,它将只从数据库检查并插入和更新。在本博客中仍然按照所有步骤进行操作:http://www.sanwebe.com/2012/05/ajax-facebook-connect-with-jquery-php
我遇到了问题。当我从Facebook登录时,它继续加载不再发生任何事情,即用户数据无法显示。所以请提供解决方案,以便我可以显示和存储Facebook用户数据。
答案 0 :(得分:2)
在应用信息中心的应用设置中,您可以将网站网址写为 -
http://localhost/HarshTest/
然后在你的应用程序(即/HarshTest/index.php
)中,你可以尝试登录facebook,它会起作用。