0

I'm trying to get users email addresses when they log in so I can they can be entered into my database and given a unique ID. I've managed to retrieve user display names and store them in the database using this code however its not working with the email address.

session_start();
            if(property_exists($profile->profile,'displayName')){
                $_SESSION['username'] = $profile->profile->displayName;
                $_SESSION['email'] = $profile->profile->email;
                $_SESSION['logged']="logged";

                $username = $_SESSION['username'];
                $email = $_SESSION['email'];

                require_once("db_connect.php");
                $query="SELECT email FROM users WHERE email = '$email'";
                mysqli_select_db($db_server, $db_database);
                $result=mysqli_query($db_server, $query);
                if($result != $email){
                    $query = "INSERT INTO users (username, email) VALUES ('$username', '$email')";
                    mysqli_query($db_server, $query) or
                                die("Insert failed. ". mysqli_error($db_server));
                }else{
                    echo "Login error.";    
                }

                mysqli_free_result($result);
                require_once("db_close.php");
                header('location:home.php');
            }else{
                $_SESSION['username'] = '(Anonymous)';
                $_SESSION['logged']="logged";
                header('location:home.php');
          } 

Thanks for your help.

Tummus
  • 35
  • 6
  • What happens when you try to get the email? Is it returning an error? And what provider's have you tested this with? It's possible that the provider either does not provide the email, or needs you to request permission before they share it with your application. – RylandAlmanza Apr 10 '14 at 20:22
  • When I try to get the email, the name of the user is entered into the database but the email is not for Google and Microsoft, both of which should provide it. Facebook works but it's appears to require the same permissions. – Tummus Apr 11 '14 at 22:04

1 Answers1

3

It sounds like it has to do with what information the providers share by default. I believe these steps should fix it:

  1. Log in to https://dashboard.janrain.com/
  2. Select your Engage application
  3. In the "Providers" box, hover over the one that you are trying to authenticate with
  4. Click the small wrench icon that appears after you've hovered over the provider
  5. Make sure that the "Ask" box is checked next to "email"

Let me know if that works out for you!

RylandAlmanza
  • 1,358
  • 1
  • 8
  • 14