登录facebook连接2

时间:2012-02-25 20:46:04

标签: php mysql facebook login connect

更新

以下是点击我的注册用户按钮发送到的用户页面。

<?php
define('FACEBOOK_APP_ID', 'XXXX');
define('FACEBOOK_SECRET', 'XXXX');

function parse_signed_request($signed_request, $secret) {
  list($encoded_sig, $payload) = explode('.', $signed_request, 2); 

  // decode the data
  $sig = base64_url_decode($encoded_sig);
  $data = json_decode(base64_url_decode($payload), true);

  if (strtoupper($data['algorithm']) !== 'HMAC-SHA256') {
    error_log('Unknown algorithm. Expected HMAC-SHA256');
    return null;
  }

  // check sig
  $expected_sig = hash_hmac('sha256', $payload, $secret, $raw = true);
  if ($sig !== $expected_sig) {
    error_log('Bad Signed JSON signature!');
    return null;
  }

  return $data;
}

function base64_url_decode($input) {
    return base64_decode(strtr($input, '-_', '+/'));
}

if ($_REQUEST) {
  $response = parse_signed_request($_REQUEST['signed_request'], 
                                       FACEBOOK_SECRET);

$uname = $response["registration"]["username"];
$rname = $response["registration"]["name"];
$seckey = $response["registration"]["seckey"];
$email = $response["registration"]["email"];
$password = $response["registration"]["password"];
$gender = $response["registration"]["gender"];
$ip_last = $_SERVER['REMOTE_ADDR'];
$time = time();
$sessionKey = 'RevCMS-'.rand(9,999).'/'.substr(sha1(time()).'/'.rand(9,9999999).'/'.rand(9,9999999).'/'.rand(9,9999999),0,33);
$newgender = substr("$gender", -4, 1);
$newpass = md5($password); //This will encrypt the password with md5, if you're not using RevCMS ensure your CMS uses md5 or change it.
$newseckey = md5($seckey); //This will encrypt the security key with md5.
// Connecting to database
mysql_connect('localhost', 'root', 'habbo123');
mysql_select_db('phoenix3');

// Inserting into users table
$result = mysql_query("INSERT INTO users (id, username, real_name, password, mail, auth_ticket, rank, credits, vip_points, activity_points, activity_points_lastupdate, look, gender, motto, account_created, last_online, online, ip_last, ip_reg, home_room, respect, daily_respect_points, daily_pet_respect_points, newbie_status, is_muted, mutant_penalty, mutant_penalty_expire, block_newfriends, hide_online, hide_inroom, mail_verified, vip, volume, seckey) 
VALUES 
(NULL, '$uname', '$rname', '$newpass', '$email', '$sessionKey','3', '10000', '0', '1000', '0', '-', '$newgender', 'I <3 Tropical-Resort', '$time', '$time', '0', '$ip_last', '$ip_last', '8', '0', '3', '3', '0', '0', '0', '0', '0', '0', '0', '1', '0', '100', '$newseckey')");
if($result){         
//Begin redirect to logged in page
header( 'Location:http://tropical-resort.org/me' );
// End redirect
}
else
{
//Un-hash this code if you're getting errors, if the error is to do with mysql it will tell you whats wrong. (Be sure to hash the redirect if you un-hash this.)
#echo mysql_error();
#echo "<br>"; echo "\"$newgender\"";
// Heres the redirect page, if you like you could send them to an error page because they'll only be sent this link if there was an error registering them.
header( 'Location:http://tropical-resort.org/index' );
}
}
else 
{
//$_REQUEST was left empty, this means at least 1 field was blank however it's more than likely they tried to go direct to this page.
?><script>alert("You left a field out, Please click back and make sure to fill everything in.")</script>
<form>
<input type="button" value="Go Back" onClick="history.go(-1);return true;">
</form>
<?php
}

?>

我现在需要做的是在我的索引中添加一个按钮,如果他们点击它,它应该尝试使用他们的Facebook登录我的网站,如果用户没有帐户,它应该重定向它们到我的注册脚本,否则它应该自动登录并重定向到登录屏幕。

您可能需要了解的信息:

要登录的密码字段使用md5

加密

任何帮助将不胜感激,如果您需要更多信息,请询问:)

-Brad


在上一个问题facebook registration connect中,我请求帮助设置我的注册页面。好吧,我现在已成功完成,但现在我需要这样做,这样用户也可以登录facebook。要做到这一点,我希望使用FaceBook登录按钮,如果他们点击登录并检测到他们没有注册,它将重定向到注册页面,否则它将登录。

我会使用哪些代码(示例)?你需要知道任何特殊信息吗?

1 个答案:

答案 0 :(得分:1)

看看这篇文章,内容涵盖了你想要达到的目标。 Facebook Integration in a PHP site