Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Facebook Registration - Check if username is available
- //this show the button and, once approved from user call process.php
- <div id="fb-login-wrapper">
- <div class="fb-login-button" onlogin="javascript:registerme();" size="medium" scope="publish_stream,email">Login</div>
- </div>
- <div id="fb-root"></div>
- <script type="text/javascript">
- window.fbAsyncInit = function() {
- FB.init({
- appId: '<?php echo $appId; ?>',
- cookie: true,
- xfbml: true,
- oauth: true,
- display:'popup'});
- };
- (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 registerme(){
- FB.login(function(response) {
- if (response.status === "connected")
- {
- var alldata = {processthis: "yes"};
- $.colorbox({href:"process.php",data:alldata,onClosed:function(){ $("#fb-login-wrapper").show(); },onComplete:function(){FB.XFBML.parse(); }});
- }
- });
- }
- </script>
- <?php
- //this is just to check what data I'm getting back, of course I will store these data on my database, but I want to check if the username is already taken.
- if(isset($_SESSION['facebook_data']))
- {
- //registration data sent from receive_data.php file
- $userid = $_SESSION['facebook_data']["user_id"];
- $name = $_SESSION['facebook_data']["registration"]["name"];
- $first_name = $_SESSION['facebook_data']["registration"]["first_name"];
- $last_name = $_SESSION['facebook_data']["registration"]["last_name"];
- $email = $_SESSION['facebook_data']["registration"]["email"];
- $location = $_SESSION['facebook_data']["registration"]["location"];
- $gender = $_SESSION['facebook_data']["registration"]["gender"];
- $birthday = $_SESSION['facebook_data']["registration"]["birthday"];
- $username = $_SESSION['facebook_data']["registration"]["username"];
- $password = $_SESSION['facebook_data']["registration"]["password"];
- //Now we have user data, we can store it in database or just prepare for output
- $facebookData = array('Facebook User ID'=>$userid,'Name'=>$name,'first_name'=>$first_name,'last_name'=>$last_name,'location'=>$location,'email'=>$email,'gender'=>$gender,'birthday'=>$birthday,'username'=>$username,'psw'=>$password);
- //Output this data
- echo '<pre>';
- print_r($facebookData);
- echo '<pre>';
- //distroy session
- session_destroy();
- }
- ?>
- <?php
- require_once('config.php' );
- if(isset($_POST["processthis"]) && $_POST["processthis"]=="yes")
- {
- $regFields='[{"name":"name"},
- {"name":"first_name"},
- {"name":"last_name"},
- {"name":"location"},
- {"name":"email"},
- {"name":"gender"},
- {"name":"birthday"},
- {"name":"username","description":"Username","type":"text"},
- {"name":"password"}]';
- echo '<div id="registration_form" style="width:560px;height:330px;" align="center">
- <fb:registration
- fields=''.$regFields.''
- redirect-uri="'.$redirect_url.'receive_data.php"
- width="530">
- </fb:registration>
- </div>';
- }
- ?>
- <?php
- require_once('config.php' );
- session_start();
- if(isset($_POST["signed_request"])){ //receive user data from facebook
- $signedresponse = parse_signed_request($_REQUEST["signed_request"], $appSect);
- if($signedresponse)
- {
- //Receive facebook data and redirect user to homepage with session variable
- $_SESSION['facebook_data'] = $signedresponse;
- header('Location: '.$redirect_url.'index.php');
- }
- }
- //function to phrase signed data from facebook.
- function parse_signed_request($signed_request, $secret) {
- list($encoded_sig, $payload) = explode('.', $signed_request, 2);
- $sig = base64_url_decode($encoded_sig);
- $data = json_decode(base64_url_decode($payload), true);
- if (strtoupper($data['algorithm']) !== 'HMAC-SHA256') {
- die('Unknown algorithm. Expected HMAC-SHA256');
- return null;
- }
- $expected_sig = hash_hmac('sha256', $payload, $secret, $raw = true);
- if ($sig !== $expected_sig) {
- die('Bad Signed JSON signature!');
- return null;
- }
- return $data;
- }
- function base64_url_decode($input) {
- return base64_decode(strtr($input, '-_', '+/'));
- }
- ?>
Add Comment
Please, Sign In to add comment