我计划将 Facebook 登录按钮集成到我的网站中。现在我有一个 Facebook 登录按钮,当按下该按钮时,会弹出一个新窗口,请求允许访问用户的基本信息和电子邮件。到现在所做的一切都来自于关注http://developers.facebook.com/docs/guides/web/#login .我正在使用 PHP(带有 Codeigniter 框架、Tank auth 身份验证库)和 jQuery。
问题:现在在我的网站上添加登录按钮后,Facebook 不再有任何关于如何继续的说明?
- 如何从 facebook 检索用户信息以插入我的数据库(如果是第一次访问)
- 如何确定用户已允许我的网站访问他的信息?
- 如果已授予访问权限,我该如何将用户重定向到新页面?
我知道 SDK 最近发生了变化,谷歌搜索有关它的教程只是给我一些教程,说它们已经过时了。任何帮助我指出正确方向的帮助将不胜感激!谢谢!
HTML/JS
<div id="fb-root"></div>
<script>
window.fbAsyncInit = function() {
FB.init({
appId : '123',
status : true,
cookie : true,
xfbml : true,
oauth : true,
});
};
(function(d){
var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
js = d.createElement('script'); js.id = id; js.async = true;
js.src = "//connect.facebook.net/en_US/all.js";
d.getElementsByTagName('head')[0].appendChild(js);
}(document));
</script>
<div id="splash_fbconnect_login_button" class="fb-login-button" data-scope="email, user_education_history, user_work_history"></div>
最佳答案
快速编辑:转到 https://github.com/facebook/connect-js确保您拥有最新版本并使用 PHP 版本,我发现它使它变得非常容易。
1) 如何从 facebook 检索用户信息以插入我的数据库(如果是第一次访问)
$user_profile['last_name'];
$user_profile['first_name'];
$user_profile['gender'];
等等
2) 如何确定用户允许我的网站访问他的信息?
Facebook API 知道这一点,不用担心 :-) 当用户点击登录时会弹出一个弹出窗口(正如您在问题中提到的那样),当他们点击允许完成时。
然而,您必须做的一件事是在 Facebook 中创建一个应用程序,否则它将无法运行,我不确定您是否已经这样做,所以请转到 https://developers.facebook.com/apps
3)如果已授予访问权限,如何将用户重定向到新页面?
在 if 语句中的 JavaScript 重定向,这是我的样子
一定要在这里设置一些变量:
<?php // Set the variables for the MVC
$first_name = $user_profile['first_name'];
$last_name = $user_profile['last_name'];
$full_name = $first_name . " " . $last_name;
$fb_id = $user_profile['id'];
$gender = $user_profile['gender'];
$SrcUser = mysql_query("SELECT * FROM users WHERE fb_id = '" . $fb_id . "'") or die(mysql_error());
$CheckDB = mysql_num_rows($SrcUser);
if($CheckDB == 1){
// If user has an account
while ($row = mysql_fetch_array($SrcUser))
{
$id = $row["id"];
$user_level = $row["user_level"];
}
session_start();
$_SESSION['user_name'] = $full_name;
$_SESSION['user_level'] = $user_level;
$_SESSION['user_id']= $id;
// Javascript redirect.. its kinda cheating to be honest as if i dont use it i will have awkwardness with header errors
?>
<script type="text/javascript">
window.location = "myaccount.php"
</script>
<?
} else {
// If user does not have an account create new
?> <?
session_start();
$_SESSION['fb_id']= $fb_id;
if($gender == "male"){
$gender = "1";
} else {
$gender = "0";
}
$_SESSION['r_full'] = $full_name;
$_SESSION['r_gender'] = $gender;
mysql_query("INSERT INTO users (full_name, gender, fb_id)
VALUES ('$full_name','$gender','$fb_id')");
$user_id = mysql_insert_id();
$md5_id = md5($user_id);
mysql_query("update users set md5_id='$md5_id' where id='$user_id'");
$md5_id = md5($user_id);
mysql_query("update users set md5_id='$md5_id' where id='$user_id'");
?>
希望这对您有所帮助!
关于php - Facebook 登录困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9323529/