Lumocra
Lumocra

Reputation: 545

Getting user's birthday through Facebook API

I'm having some troubles with the Facebook API, I am requesting permission for some information of the user by Javascript:

FB.login(function (response) {
    if (response.authResponse) {
        // authorized
    } else {
        // canceled
    }
}, {scope: 'email,user_birthday,user_location'});

Now I want to get the user's information (when he is authorized) by PHP:

$facebookUser = json_decode(file_get_contents('https://graph.facebook.com/' . $this->data['userid'] . '?access_token=' . $this->oathtoken . '&fields=id,name,location,gender,email,picture,birthday,link'));

All working great, except that the API is not giving the user's birthday back. Even when I set my birthday privacy settings on public it won't show up.

So:

echo $facebookUser['birthday']; // Gives an error, since this key does not exists

Does somebody have an idea how to fix this?

Upvotes: 2

Views: 16958

Answers (3)

Dima L.
Dima L.

Reputation: 3583

Most probably you didn't receive approval to request user_birthday from FB.

You can't get user_birthday unless FB reviews your FB app.

Only the following permissions may be requested without review: public_profile, user_friends and email (See: https://developers.facebook.com/docs/facebook-login/review/what-is-login-review)

Without review you can request only age_range, but not user_birthday

Upvotes: 1

Besnik
Besnik

Reputation: 6529

You are logged in on the client side but php is executed on the server side so you receive only the basic information of an user object.

If you logged in on the server side and have the permissions so you can get the birthday simply with:

echo $facebookUser['birthday'];

Upvotes: 2

Seho Lee
Seho Lee

Reputation: 4108

FB.login(function (response) {
    var user_birthday = response.user_birthday; 
    console.log(user_birthday);
if (response.authResponse) {

} else {
    // canceled
}
}, {scope: 'email,user_birthday,user_location'});

why don't you use serverside auth if you would like get FB info in server side?

if you are ok with clientside authentication, above should work.

Upvotes: 0

Related Questions