Everyone knows https://graph.facebook.com/[facebook_id]/picture?redirect=false will retrieve the URL of the profile picture.
I've tried it on browsers, NestJS back end, etc.
I don't know why it turns into a silhouette picture but when I provided the access_token the URL was changed to https://platform-lookaside.fbsbx.com/.... that not return the silhouette anymore. This gives me the profile picture but it is always downloaded rather than just displayed. Moreover, the URL from my latest approach is a signed URL and it has expiration time but I need a static URL for the profile picture.
Did anyone have an idea for this? Thank you.
According to the docs
GET /{user-id}/picture requests made by apps in Development mode using either (1) a Client access token or (2) tokenless requests on an App-Scoped User ID will receive a silhouette image instead of the app user's profile image in response.
See full documentation
here
It's solved!
Just use the url directly in src of img
Related
I am using user profile picture I get from Facebook SDK. Do I need to cache photo or url is enough to cache? Is it possible once url will invalid? Is it possible once loading url will not be possible Facebook provided?
I.e. my profile pic url is here, still able to load photo, but for how long it is available? https://scontent.xx.fbcdn.net/v/t1.0-1/p200x200/12592388_10208092332220228_4815371318375925057_n.jpg?oh=cc3ba223afc6f123e381ef18fabbc40d&oe=57E3BD91
In general, you should not store any URL of the Facebook CDNs, Facebook cannot guarantee that it will still be available later, with the same URL. If you need it later, download it to your own server...or get it with the API again.
I have a log in to my site using Twitter. It all works great.
Whilst I can do a call to get the current users details etc and log them in, I'm a bit stumped on how I make calls to get the profile images of users stored in my database; those who may not be using the website at that time?
I am using the monkehTweets Twitter library:
https://github.com/coldfumonkeh/monkehTweets
To get the current user, I sign them in and do this:
application.objMonkehTweet.setFinalAccessDetails(
oauthToken = returnData.token,
oauthTokenSecret = returnData.token_secret,
userAccountName = returnData.screen_name
);
local.userDetails = application.objMonkehTweet.getUserDetails(user_id=returnData.user_id);
As part of the log in process on my website, if a user hasn't used the site before, I store their Twitter ID.
I was hoping to then use this to display their profile images on the posts they make to other users.
What is the best approach to achieve this? With the Facebook API, you can make requests to a URL with the ID...but Twitter doesn't seem to allow this.
I would prefer not to 'store' the image on my own file system. This was a possibility I had in mind, but I'd rather use the API to always ensure the latest data.
Is there a way to use my own app details through OAuth to access this?
Any help would be greatly appreciated.
Thanks,
Michael.
PS - I am using ColdFusion (Railo) to do my server-side based authentication.
The twitter api returns profiles with the images (if you are looking it up) in the key profile_image_url
So you could store them in a cache like:
if(!cacheKeyExists(twitterID)){
// Code to get a twitter profile through monkehtweet
cachePut(twitterID, profile.profile_image_url);
}
return cacheGet(twitterID);
Hope this helps
Can anyone tell me how this facebook application was able to make 'MemeGen' a link in this post? I have a photo upload application, and everything works great, but I can't figure out how to stick a link like this in the posts.
This is the markup that they managed to get into the message.
MemeGen
Thanks for any help!
That is obviously not a normal photo upload, but an Open Graph action, which publishes a user generated image – https://developers.facebook.com/docs/opengraph/actions/#usergenerated
(And at that, it is in violation of the rules, because actions are only supposed to post real photos that the user publishing the action took at that very moment with his camera – and I doubt that this particular image with text on it qualifies as such.)
I've made a basic HTML5/JS comic creation tool that uses the canvas element.
I want users to be able to upload their comics via the Facebook API.
I don't believe Facebook allows posting images in the form of base64 strings from the canvas.toDataURI() method, and don't want to use my own server to convert these images & temporarily store them.
What's the best way to go about this? Possibilities I've wondered about: Convert canvas to blob? Store blob via web service (if so, suggestions?) Upload blob directly to Facebook? (Is that possible?)
I don’t see why this should not be possible doing a „normal” upload. You can create a new photo for a user by posting to PROFILE_ID/photos, with a source parameter of type multipart/form-data.
So first thing I’d try is getting the picture info from the canvas object into a „normal” form (writing it into a input element in the right format(?)), and sending that to Facebook. If this step succeeds, I’d see if jQuery or some other lib’s form.serialize method can build requests of type multipart/form-data. If that’s also possible, then there should be no further problem in taking the data in that format and posting it using FB.api (although you might want to tell your users to be patient, because that might take a while).
Can’t tell for sure if this’ll work, but I’d give it a try.
Facebook partners with Heroku for free app hosting, you can use it as the temporary server.
I was trying to find this on facebook's site in their documentation but so far no luck. I'm sure others must have run into this before.
I use Amazon S3 for storing images. I didn't know ahead of time that if I named my bucket as my domain name with subdomain I could link that way, so until I move all of the pictures I have to link to mybucket.s3.amazonaws.com domain. When I include a picture from there with a post to the wall the picture doesn't show up. If I change the picture to one on the server itself the picture does show up. It seems that the domain name of the picture must match my app? I looked at bugzilla and didn't see this mentioned. Facebook's forum says to post questions here.
I'm using the C# Facebook SDK from CodePlex.
My code looks like (with error handling and authentication check removed):
var client = new FacebookClient(FACEBOOK_APP_ID, FACEBOOK_SECRET);
client.AccessToken = facebook.AccessToken;
var parameters = new Dictionary<string, object>();
parameters.Add("name", name);
parameters.Add("caption", title);
parameters.Add("message", message);
parameters.Add("link", link);
parameters.Add("source", link);
parameters.Add("picture", imageUrl);
client.Post("me/feed", parameters);
I verified that imageUrl does indeed have a correct picture, the domain name just doesn't match. The picture on amazon s3 has public read access. I can view it from my browser so I don't think it's a permission problem. I've tried a few different pictures with the same problem. Only time it's worked so far is when the picture was on the server itself.
So, my question is, is it a problem with me, or does facebook block images that don't match the domain name specified on the app?
You can upload the picture from that url, then add its object id in the post.
Refer to: http://developers.facebook.com/blog/post/526/?ref=nf
Uploading Photos to the Graph API via a URL
Earlier this year, we released support for uploading photos directly
via the Graph API. This requires sending the photo as a MIME-encoded
form field. We are now enhancing our photo upload capability by
introducing the ability to upload photos simply by providing a URL to
the image. This simplifies photo management for a number of use cases:
App developers who host their images on Amazon S3 or a similar
service can pass the S3 URL directly to Facebook without having to
download the file to their application servers only to upload it
again to Facebook. This improves performance and reduces costs for
developers.
Apps written on platforms that don't have good support for
multipart file uploads can create new photos more easily.
To upload a photo via a URL, simply issue an HTTP POST to
ALBUM_ID/photos with the url field set to the URL of the photo you
wish to upload. You need the publish_stream permission to perform this
operation. You can also include an optional message parameter to set a
caption for the photo.
I'am facing the same issue as well. Based on my observations it seems that facebook does not like it when the picture url has more than one sub-domain.
I tried the below 2 URL variations for the same image..
mybucket.s3.amazonaws.com - throws an error
s3.amazonaws.com/mybucket - works fine
:picture => 'http://mybucket.s3.amazonaws.com/footprints/15/coverimgs/medium.jpg'
OAuthException: (#100) picture URL is not properly formatted
:picture => 'http://s3.amazonaws.com/mybucket/footprints/15/coverimgs/medium.jpg'
{"id"=>"587472956_10150280873767957"}
Now i have to figure out how to change the URL structure for the image while passing it to the FB graph API.
I would log it as a bug. If this is really the case, which I kinda doubt, you could create a 301 redirect on your own domain for each image that redirects to the Amazon url.