Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

facebook oauth, no picture with basic permissions

Tags:

I'm using oauth to log facebook users in to my app. I'm testing with my FB account and with the basic permissions scope. Facebook docs say that I should be able to get 'picture' with basic permissions, but my account has no 'picture' property when I access it with the API. First name, last name, etc. are there though.

Is this because my account is not publicly viewable? Why might this happen? I definitely have a profile picture attached.

Here's my fb link: http://www.facebook.com/josh.nankin

like image 241
Josh Nankin Avatar asked Jul 31 '12 21:07

Josh Nankin


People also ask

How do I allow permissions on Facebook?

Step 1: In Facebook, click the small arrow near your name in the upper-right-hand corner and choose Privacy Settings. Step 2: Scroll down to Apps and Web sites and click on Edit Settings off to the right. Step 3: If the app you want to adjust is in the recently used list, click on it to edit settings.

What permissions does Facebook ask for?

Facebook Login allows a person to grant only a subset of permissions that you ask for to your app, except for public profile, which is always required.

How do I set up OAuth on Facebook?

In the App Dashboard, choose your app and scroll to Add a Product Click Set Up in the Facebook Login card. Select Settings in the left side navigation panel and under Client OAuth Settings, enter your redirect URL in the Valid OAuth Redirect URIs field for successful authorization.

Does Facebook Log in use OAuth?

In this article, I will explain how you can implement “Log in with Facebook” on your website or mobile app in a very easy manner. Facebook work on the OAuth 2.0 protocol and most of the social providers like Facebook, Google, Microsoft, Linkedin are supporting OAuth 2.0.


2 Answers

best way is to keep the basic permissions and fire the request for the image in a separate step. Ask the graph api in this way:

https://graph.facebook.com/[fb_user_id]?fields=picture.type(small) 

larger image:

https://graph.facebook.com/[fb_user_id]?fields=picture.type(large) 

You will get a JSON response like:

{    "id": "100001XXXXXXXXX",    "picture": {       "data": {          "url": "http://profile.ak.fbcdn.net/hprofile-XXXX/41524_1000018XXX51507_XXXX3_q.jpg",          "is_silhouette": false       }    } } 
like image 134
maddin2code Avatar answered Oct 28 '22 19:10

maddin2code


You can derive the profile photo URL directly from the basic standard OAuth info returned from facebook as Josh Nankin noted, BUT with a clarification.

You can still use the user's ID returned to request the photo, for example:

https://graph.facebook.com/914431778578699/picture?type=large

is the same as

https://graph.facebook.com/dark.eye.1/picture?type=large

This way only one request must be made, because you can interpolate the photo URL as you store it in the DB.

like image 33
Dark_eye Avatar answered Oct 28 '22 19:10

Dark_eye