Facebook app, retrieve user info from facebook and copy it to buddy press users
-
i’m trying to get user info from facebook when a user tries to login through facebook on my website ,Wordpress website, I have been struggling to retrieve users’ birthday, email, first name, last name and interests and so on what is the code to get them. I’m newly to facebook apps so I don’t know what to do and what is the procedure
All what i can retrieve is the email, name and create username according to the url user name
some clear code would be useful Thank you
This is my code location in my directory:
wp-content/themes/themeName/framework/functions/facebook_login.php<?php function fb_head(){ if( is_user_logged_in()) return; ?> <div id="fb-root"></div> <script> // Additional JS functions here window.fbAsyncInit = function() { FB.init({ appId : '<?php echo sq_option('fb_app_id'); ?>', // App ID version : 'v2.0', status : true, // check login status cookie : true, // enable cookies to allow the server to access the session xfbml : true, // parse XFBML oauth : true }); // Additional init code here }; // Load the SDK asynchronously (function(d){ var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0]; if (d.getElementById(id)) {return;} js = d.createElement('script'); js.id = id; js.async = true; js.src = "//connect.facebook.net/en_US/sdk.js"; ref.parentNode.insertBefore(js, ref); }(document)); </script> <?php } add_action( 'kleo_after_body', 'fb_head' ); function fb_footer(){ ?> <script type="text/javascript"> var ajaxurl = '<?php echo admin_url('admin-ajax.php'); ?>'; jQuery('.facebook_connect').click(function(){ var context = jQuery(this).closest("form"); if (jQuery(".tos_register", context).length > 0) { if (! jQuery(".tos_register", context).is(":checked")) { alert('<?php echo apply_filters('kleo_fb_tos_alert',__("You must agree with the terms and conditions.",'kleo_framework'));?>'); return false; } } FB.login(function(FB_response){ if( FB_response.status === 'connected' ){ fb_intialize(FB_response); } }, {scope: 'public_profile,email'}); }); function fb_intialize(FB_response){ FB.api( '/me', 'GET', {'fields':'id,email,verified,name'}, function(FB_userdata){ jQuery.ajax({ type: 'POST', url: ajaxurl, data: {"action": "fb_intialize", "FB_userdata": FB_userdata, "FB_response": FB_response}, success: function(user){ if( user.error ){ alert( user.error ); } else if( user.loggedin ){ if( user.type === 'login' ) { window.location.reload(); } else if( user.type === 'register' ) { window.location = user.url; } } } }); } ); }; </script> <?php } add_action( 'wp_footer', 'fb_footer' ); if (!function_exists('fb_button')): function fb_button() { ?> <a href="#" class="facebook_connect radius button facebook"><i class="icon-facebook-sign"></i> <?php _e("LOG IN WITH Facebook", 'kleo_framework');?></a> <?php } endif; if (!function_exists('fb_register_button')): function fb_register_button() { ?> <a href="#" class="facebook_connect radius small button facebook"><i class="icon-facebook-sign"></i> <?php _e("Register using Facebook", 'kleo_framework');?></a> <?php } endif; if (!function_exists('fb_register_button_front')): function fb_register_button_front() { ?> <a href="#" class="facebook_connect radius button facebook"><i class="icon-facebook"></i></a> <?php } endif; add_action('fb_popup_button', 'fb_button' ); if (sq_option('facebook_register', 0) == 1) { add_action('fb_popup_register_button', 'fb_register_button' ); add_action('fb_popup_register_button_front', 'fb_register_button_front' ); } function wp_ajax_fb_intialize(){ @error_reporting( 0 ); // Don't break the JSON result header( 'Content-type: application/json' ); if( !isset( $_REQUEST['FB_response'] ) || !isset( $_REQUEST['FB_userdata'] )) die( json_encode( array( 'error' => __('Authenication required.', 'kleo_framework') ))); $FB_response = $_REQUEST['FB_response']; $FB_userdata = $_REQUEST['FB_userdata']; $FB_userid = $FB_userdata['id']; if( !$FB_userid ) die( json_encode( array( 'error' => __('Please connect your facebook account.', 'kleo_framework') ))); global $wpdb; //check if we already have matched our facebook account $user_ID = $wpdb->get_var( "SELECT user_id FROM $wpdb->usermeta WHERE meta_key = '_fbid' AND meta_value = '$FB_userid'" ); //if facebook is not connected if( !$user_ID ){ $user_email = $FB_userdata['email']; $user_ID = $wpdb->get_var( "SELECT ID FROM $wpdb->users WHERE user_email = '".$wpdb->escape($user_email)."'" ); $redirect = ''; //if we have a registered user with this Facebook email if(!$user_ID ) { if ( !get_option( 'users_can_register' )) { die( json_encode( array( 'error' => __('Registration is not open at this time. Please come back later.', 'kleo_framework') ))); } if (sq_option('facebook_register', 0) == 0) { die( json_encode( array( 'error' => __('Registration using Facebook is not currently allowed. Please use our Register page', 'kleo_framework') ))); } extract( $FB_userdata ); $display_name = $name; if( empty( $verified ) || !$verified ) die( json_encode( array( 'error' => __('Your facebook account is not verified. You have to verify your account before proceed login or registering on this site.', 'kleo_framework') ))); $user_email = $email; if ( empty( $user_email )) die( json_encode( array( 'error' => __('Please re-connect your facebook account as we couldn\'t find your email address.', 'kleo_framework') ))); if( empty( $name )) die( json_encode( array( 'error' => 'empty_name', __('We didn\'t find your name. Please complete your facebook account before proceeding.', 'kleo_framework') ))); $user_login = sanitize_title_with_dashes( sanitize_user( $display_name, true )); if ( username_exists( $user_login )) { $user_login = $user_login. time(); } $user_pass = wp_generate_password( 12, false ); $userdata = compact( 'user_login', 'user_email', 'user_pass', 'display_name' ); $userdata = apply_filters('kleo_fb_register_data', $userdata); $user_ID = wp_insert_user( $userdata ); if ( is_wp_error( $user_ID )) die( json_encode( array( 'error' => $user_ID->get_error_message()))); //send email with password wp_new_user_notification( $user_ID, wp_unslash( $user_pass ) ); //add Facebook image update_user_meta($user_ID, 'kleo_fb_picture', 'https://graph.facebook.com/' . $id . '/picture'); do_action('fb_register_action',$user_ID); update_user_meta( $user_ID, '_fbid', (int) $id ); $logintype = 'register'; $redirect = apply_filters('kleo_fb_register_redirect',bp_core_get_user_domain( $user_ID ).'profile/edit/group/1/?fb=registered'); } else { update_user_meta( $user_ID, '_fbid', (int) $FB_userdata['id'] ); //add Facebook image update_user_meta($user_ID, 'kleo_fb_picture', 'https://graph.facebook.com/' . (int) $FB_userdata['id'] . '/picture'); $logintype = 'login'; } } else { $logintype = 'login'; } wp_set_auth_cookie( $user_ID, false, false ); die( json_encode( array( 'loggedin' => true, 'type' => $logintype, 'url' => $redirect ))); } add_action( 'wp_ajax_nopriv_fb_intialize', 'wp_ajax_fb_intialize' ); //If registered via Facebook -> show message add_action( 'template_notices', 'kleo_fb_register_message' ); if (!function_exists('kleo_fb_register_message')): function kleo_fb_register_message() { if (isset($_GET['fb']) && $_GET['fb'] == 'registered') { echo '<div class="clearfix"></div><br><div class="alert-box success" id="message" data-alert>'; echo __('Thank you for registering. Please make sure to complete your profile fields below.', 'kleo_framework'); echo '</div>'; } } endif; //display Facebook avatar if(sq_option('facebook_avatar', 1) == 1) { //show Facebook avatar in WP add_filter('get_avatar', 'kleo_fb_show_avatar', 5, 5); //show Facebook avatar in Buddypress add_filter('bp_core_fetch_avatar', 'kleo_fb_bp_show_avatar', 3, 5); //show Facebook avatar in Buddypress - url version add_filter('bp_core_fetch_avatar_url','kleo_fb_bp_show_avatar_url', 3, 2); } function kleo_fb_show_avatar($avatar = '', $id_or_email, $size = 96, $default = '', $alt = false) { $id = 0; if (is_numeric($id_or_email)) { $id = $id_or_email; } else if (is_string($id_or_email)) { $u = get_user_by('email', $id_or_email); $id = $u->id; } else if (is_object($id_or_email)) { $id = $id_or_email->user_id; } if ($id == 0) return $avatar; //if we have an avatar uploaded and is not Gravatar return it if(strpos($avatar, home_url()) !== FALSE && strpos($avatar, 'gravatar') === FALSE) return $avatar; //if we don't have a Facebook photo $pic = get_user_meta($id, 'kleo_fb_picture', true); if (!$pic || $pic == '') return $avatar; $avatar = preg_replace('/src=("|\').*?("|\')/i', 'src=\'' . $pic . apply_filters('fb_show_avatar_params', '?width=580&height=580') . '\'', $avatar); return $avatar; } function kleo_fb_bp_show_avatar($avatar = '', $params, $id) { if(!is_numeric($id) || strpos($avatar, 'gravatar') === false) return $avatar; //if we have an avatar uploaded and is not Gravatar return it if(strpos($avatar, home_url()) !== FALSE && strpos($avatar, 'gravatar') === FALSE) return $avatar; $pic = get_user_meta($id, 'kleo_fb_picture', true); if (!$pic || $pic == '') return $avatar; $avatar = preg_replace('/src=("|\').*?("|\')/i', 'src=\'' . $pic. apply_filters('fb_show_avatar_params', '?width=580&height=580') . '\'', $avatar); return $avatar; } function kleo_fb_bp_show_avatar_url($gravatar, $params) { //if we have an avatar uploaded and is not Gravatar return it if(strpos($gravatar, home_url()) !== FALSE && strpos($gravatar, 'gravatar') === FALSE) return $gravatar; $pic = get_user_meta($params['item_id'], 'kleo_fb_picture', true); if (!$pic || $pic == '') return $gravatar; return $pic. apply_filters('fb_show_avatar_params', '?width=580&height=580'); } ?>
- The topic ‘Facebook app, retrieve user info from facebook and copy it to buddy press users’ is closed to new replies.