I am a PHP developer, but completely new to this Facebook stuff and am getting all confused. The whole Apps vs Pages vs Fan Pages terminology is driving me nuts. Please help!
My client's requirements:
1) Display Like button on a single web page
2) When Like button is clicked, content on the page is unlocked and displayed (PHP)
3) Future visits to the page detects that visitor already likes the page, and content remains unlocked (PHP)
4) All updates to web page profile on FB will show on Likers' news feed
My understanding is that the cleanest way of doing (3) above is to use the PHP SDK. But to do this, I need to create an app (to get the App ID). So I created an App. I 'liked' the App from my FB profile. Updates to my app are posted to my news feed. So far, so good.
However when I try and implement the PHP SDK, it only works if I authorize the App to my account first. Is there a way of avoiding this authorization step just for a simple "Like" (I ask because I didn't have to authorize anything when liking the app within FB)? If this authorization is unavoidable, are there any alternatives to Apps that would allow me to achieve the above requirements?
Ideally, I'd like to use just "Pages" to do this, and not Apps, but I believe I cannot achieve (2) and (3) with pages, correct (remembering everything needs to be server side, so no JavaScript showing and hiding layers etc)?
I would be grateful for any guidance.
Thanks.
So I'm assuming what we are talking about here is a Facebook tab - the 520 pixel wide applications that can go in Fan pages?
If not, you will not be able to make this happen without permissions. It sounds like that is what you're talking about, though.
Here's an example of an Facebook tab on the Coca Cola fan page:
In a tab, the PHP SDK will tell you if the user is a fan of the page (not of the app, of the page). You'll need to read the signed request - there will be a parameter there called Page, which tells you if the user is already a fan (see https://developers.facebook.com/docs/authentication/signed_request/). You get this without having to authorize.
I usually read all this and store whether the user is a fan in a boolean variable. Then later in my page I'll do something like this:
<?php if ($isFan):?>
Content for fans here
<?php else:?>
Content for non-fans here
<?php endif;?>
Keep in mind that it is only telling you if the user is a fan OF THAT PAGE - if you set up your app on a test page, for instance, it'll tell you if the user is a fan of that test page or not, NOT if the user is a fan of your app.
In order to read what a facebook user likes using the PHP SDK, you will need the user_likes permission. You may however, be able to hack something together by rendering a like button on your page somewhere and detecting the color of the button, meaning the user has liked the page. This may be problematic because of cross domain issues considering the like button is rendered as an iframe.
Best of luck!
For some things, you need an app. Like restricting access to content if the user has "Liked" something. You need custom code to do that. You don't need an app for a basic "Like" button, but you really can't get any stats on the Likes. You can link an app to a website, so that you can report on the content and referrals. If you go to http://www.facebook.com/insights/ you can link the app with a website so the insights/reporting are combined. Just click on the "Insights for your Website" button. It does require validation.
That said, your confusion is the norm. Apps, Pages and Fan Pages are almost the same thing. They are all referenced through numerical ID. There are subtle feature differences between Pages and App Pages. An app can be added to any Page if it is configured to do so. But you can't add a Page to another Page.
You can use FQL to query if a user is a fan of your app, instead of the Page you are currently on.
Facebook controls what gets shown in the news feed. Just because you post to the feed, doesn't mean it will show. However, if you are an admin of the Page and/or App, posts will always show in your feed.
Related
I am looking for Like Button to be shown in my ios native app, users of that app have already connected to app via facebook account.
there are several questions related to Facebook Like Button on stackoverflow but those are not specific to authorized single facebook page of the app.
According to official doc of facebook, facebook pages can not be liked via built-in action o open graph api.
But want only one official facebook page of that app to be liked by user when he hits like button. i don't want user to navigate away from the app or login again in web view to like facebook page.
is it possible to like app's facebook page without promoting user to log in again in webveiw?
Edit
Findings
1. https://stackoverflow.com/a/5837036/1632984
2. Comment by wallacer
"the general consensus does seem to be that you can't like a page on behalf of the user, however I just had an ios game like a page on my behalf. Extreme Road Trip successfully manages to get you to like their own page. I wish I'd paid more attention when I did it now..." – wallacer
This still can't be done directly using the graph api ( to the best of my knowledge ). What you can do is open a webview to the page you want the user to like. If you're rewarding their liking your app or something, when they close the webview (you'll have to provide a close button), you can use the graph api to check whether they like your app page. As far as I can tell this is the best current solution - and seems to be the approach taken by mobile games.
That said, I haven't used Facebook SDK 3 yet, so there may be something in there that could help you.
It appears that Liking a page on behalf of a user is still impossible. I've glanced over the iOS SDK Reference, and it doesn't seem like there is a built in mechanism to like anything.
However, in reading one of the other posts you linked to, and remembering that Facebook opened up the Like open graph action so app developers could allow their users to like content generated by their application...I found this link about built-in-actions (likes).
According to that link, you can post Like actions to your users by POSTing to https://graph.facebook.com/<user_id>/og.likes with the POST params for object (the open graph object URL you want to like on behalf of the user in this case your page's url. eg. www.facebook.com/yourpage) and access_token (obviously, for your user).
I'm not totally convinced that will work; though it is conceivable. My second thought would be to create an Open Graph Object for your page, and have all your users like that. Though, that is a little less ideal, as it removes the possibility of people finding your Page while they're on Facebook and would require you to put a lot more effort into getting likes for the Page via your website, application, etc.
I hope that helps a bit, good luck.
I was wonder if this would be possible and how to do it. I have a personal website. I wanted to have it so that in order for the visitor to gain access to a specific page,the website checks to see if that visitor is a fan of our page on facebook. If they are not, they must become one to advance to the page content on my website. I thought perhaps there is a code that would do this? Maybe some kind of token/cookie combo? Any help would be great. Iv been searching for a solution to this. The page on my personal site gets a lot of traffic so I want to require all visitors to that page to become a facebook fan and the site verifies this before letting them into the page.
Outside of Facebook you can only check if a user likes your page if you have the user login to your site first.
So you’d need to set up an app, have the user login, ask for their permission to read their likes, read the info if they like your particular page – and then either let them see the content, or present them with a like button.
How it’s done in detail is all in the docs – so please have a look around there if you think it’s worth the cost.
When setting up pages on Facebook, there seems to end up 3 pages.
A Page that represents the website, i.e., when someone Likes the website, they like a newly created Facebook page that represents this website.
A Page that represents the brand, this is a true Facebook page, as created by the user.
An Application Profile Page, which is created by the user because the website in (1) allows endusers to login using their account.
Pressing Like on the website does not +1 the like count on the brand page in (2) above, likewise, liking the brand page doesn't update the count shown on the like button on the website either.
The App posts updates to users profile, with a link back to the App Profile Page, although it has the same functionality as the brand page, is empty as the brand page is the one being maintained.
You can't choose a username for the app profile page, nor change its category, nor 'use' facebook as this page, nor 'check in' to a profile page, nor set any other information like address/phone number; so you wouldn't want to use the profile page as the brand page as it's missing these features.
To clarify, the Graph API contains 3 objects that essentially represent the same thing, their types are as follows:
type = "page"; representing the brand
type = "website"; representing the website of the brand
type = "application"; representing the ability for the website to login via Facebook
Each of these Graph objects collects their own Likes.
How can the likes be collected under a single identity? Why can't a single Graph object/page have all the features that each type of page above has to offer..?
So, a few thoughts:
The Open Graph tries to represent the world as a collection of Objects, with Types. A Facebook Page is one type. A website is another. You might have a Facebook Page, but not a website. Or a website, but not a Facebook Page. An Application is something completely different too (although it's confusing, since they DO give Applications profile Pages...). Lots of folks with websites and applications don't use a single App.
So they do not always represent the same thing, which is why they are not the same thing.
But sometimes they do, sort of, represent the same thing (as in your case).
When this happens there are a couple tricks you can do to improve brand coherence on Facebook.
1) On your website, point the link button to your Facebook Page
<div class="fb-like" data-href="http://facebook.com/mypageurl"></div>
This way at least you have a slightly more unified Like count. You can't hide/disable Page likes, so the best you can do is try to funnel website likes to Page likes. Users will see your Page Like count on the website, and when they like your website your Page count will increase.
2) Have a link on your App profile page to your regular Facebook Page
If you are using an App to publish things, there is that small tagline at the bottom of the post that links to the app. Some folks will click on it. Just add a link to your description in the sidebar saying "Visit our page here!". If there is nothing going on with your App page except a link to your real Page, I don't think you will collect too many Likes on the App page.
(I think you could also set up a custom landing tab on your App page that redirects users to your Facebook Page if you want to get real fancy. It used to work, at least, not sure if it still does.)
EDIT: 12/9/2011 Facebook is removing App Profile pages:
http://developers.facebook.com/blog/post/611/
It's all kind of a pain, I know. Perhaps worth filing a bug about? But there is a reason why things are the way they are, I don't think you have to worry about the App page all that much, and there are some ways to mitigate the problem.
Good luck!
I created a FB App to facilitate FB Connect authentication on my website.
Users can share content from my site to Facebook via the same FB app.
We also created a FB Fan Page to grow our community reach.
However a FB App is a separate entity than a Fan Page, whatever content is shared via our website to FB the App link sends the users to an empty App page while all the fuzz is in our Fan page.
I did an extensive research for this issue and only came up with this useful post here in stackoverflow: "Fan page vs Application Page".
Ideally i'd want the App link ("... via appName") on every shared item to point to our fan page.
I need to know if this is an issue that FB needs to address, if i am missing something and what do you do to solve this situation
Some apps are able to do this :
http://mediafeedia.com/pro/
http://www.postplanner.com/white-label-facebook-app/
I also would be interested to know how they do this.
I've checked all app settings...
No, the App attribution on posts made via the API returns the user to that app's profile page - you'd need to have information there directing them back to your brand page if that's where you want them to go after they end up there.
I think in most cases people would click the name of the page or one of the links in the post rather than that small link at the bottom, no?
I can't seem to find exactly what I'm looking for. We're trying to build an app to run solely on a Facebook Page. We want to show a landing page if they don't Like the page, and the contest entry form if they do. This functionality works.
Before showing the contest entry form, we'd like to authenticate the user viewing the app so that they can just hit "Enter the contest!" and we can automatically pull a name/email address.
Any of the methods of authentication I've seen described, including through the Facebook Developer docs, don't work at all.
I saw something that said they need to interact with the app first, then you can get the id, but that doesn't work either. I also don't get the page id passed with the signed request.
Its also pretty unclear whether I should be using an iframe or just FBML.
Could anyone point me in the right direction, please? Thanks!
You need to create a fan page and add the FBML plugin to that page, then you will need to insert a short code that will determine if a facebook user has clicked 'Like' or not and by determining that you will decide weather to display the content of the landing page or not (using an iframe). You will probably like to also set the FBML box that you create as the default view for members who didn't press the 'Like' button yet, you can change the default view in your fan page settings.
On the iframe, you will need to use the Facebook API if you want to retrieve any user information from Facebook, for that, you will need to register a new application with Facebook. Go to developers.facebook.com for the API integration and app registration.
Also, what do you mean when you say:
Any of the methods of authentication
I've seen described, including through
the Facebook Developer docs, don't
work at all.
Well, it appears you can't do it that way. The client was very specific in wanting that functionality but we ended up convincing them to go for a redirect to the canvas page to have the app authorized and the contest entered instead.