What's the best way to write facebook apps in haskell? - facebook

I'm building a site in haskell and the yesod web framework as a side project, and what I'd like to do is create a facebook app that lets users search their wall and the wall of their friends and groups.
I've considered using the JavaScript SDK, cbut most of the work will happen behind the scenes in a helper function called from the postSearhR helper function, so that won't work.
Searching google for the phrase 'haskell "build facebook app"' and variants doesn't turn anything up, and a glance at hackage shows a package called happstack-facebok at version 0.30 with nothing in the way of haddock documentation. Searching SO with the haskell and facebook tags doesn't return anything useful either.
Does anyone know of an example I can use?

happstack-facebook is obsolete now anyway. Facebook changed their API significantly, for the better. (Not saying it is great... just better than before).
A good starting point now might be the authenticate library. in Web.Authenticate.Facebook:
http://hackage.haskell.org/packages/archive/authenticate/0.10.4/doc/html/Web-Authenticate-Facebook.html
there is a function, getGraphData. That should at least get you to the point of being able to access some of the facebook API.
http://developers.facebook.com/docs/reference/api/
Not sure what else is needed.

Related

can i use a generic app id for multiple websites' like boxes

I am going insane with this. It used to just work! I'm a programmer but not up to date with all this modern languages stuff and have no desire to learn it - too darn old, just want an easy life.
Okay, so here's the thing... I used to have these "like boxes" on my websites. Then they stopped working. I looked in the dev docs and fixed the absolute URL and they worked ok on IE browsers but not on Chrome.
It looks like I need an App Id.
So I created an App Id on a test website - I have no idea what it is or why I need one. All I want to do is show on the website it has n likes and the button for Facebook lovers to like it too.
But do I need to create an App Id for every single clients website? How do other CMS systems handle it? My sites are not html 5 - I'd be happy with just an iframe solution.
I'm not a fan of Facebook at all, and this is driving me further away. I'm willing to be dragged back but all I see is lots of overly complex code to achieve nothing really useful.
You can do whatever you want with your app ID, but if you use the same one for all your sites, you won't be able to separate those in your "Insights"
https://www.facebook.com/insights/

Add-to-timeline deprecation on Facebook. How to replace it?

According to the docs, the "Add to Timeline" button will be deprecated as of August 2012. Unfortunately, there is no guidance on how to achieve the same functionality. Perplexingly, the Open Graph tutorial uses the button (which seems unwise given that it will be broken in a couple months). Since I'm writing a new implementation of actions/timeline right now, I'm not going to include something that I'll have to delete in a couple months. Everything works fine with AJAX and the PHP-SDK and only two issues remain unresolved (which I imagine the button would handle):
No way to tell if an action is posted already. I have "unique" enabled already but I have no way to hide the "Add to timeline" option if it's already posted.
No nice visual. I could render the current (soon to be deprecated) button and steal the image but I'd prefer to use something that will look the same as other sites and make users comfortable that they know what will happen when they click.
Does Facebook have a replacement for this button? Or are all timeline posts supposed to be taking place silently after an initial permission grant? I thought Facebook encouraged more user approval for Timeline actions--where is that control supposed to go? To third party UI elements? Doesn't that undermine some of the power of the Facebook ecosystem--the fact that it's the same buttons with the same behavior everywhere on the web? It's kind of frustrating the way it's presented now--pushing you in one direction in the tutorial only to tell you that the feature will be deprecated within months. I've mostly given up hope for problem #1 but is there an official non-deprecated button that will give me a nice comforting visual?
Also, are there other features that this button does that are being/have been transitioned to other plugins?
EDIT: Does it make sense to link the "Like" button to a timeline event? It seems like semantically that would make sense but there doesn't seem to be any built-in way to do it.

How to Style Facebook Activity Feed

How do you implement custom css on a Facebook activity feed plugin? This related post does not fully answer the question. Is this the right way?
Where does the
<fb:tag name='link'></fb:tag>
go? Inside of of the
<fb:activity site="..." app_id="..." ></fb:activity>
outside of it, before or after? I'm sort of confused...
the only way i use activity feed is when its in a widget that will generically upate in all posts. Anyone who inserts these snippets into blog posts or other 'hard to find and edit later' posts and pages, will regret it
Why?
Because Facebook changes their script every month or so and the script snippet you inserted wont work anymore
I have hundreds of blank areas in blog posts where i inserted an activity feed and the script always stops working after some weeks when fb adds some code or changes the location of some script or renames a file and the old script has no canonical or generic way of readjusting.
There is no point in using a script which gets made obsolete every month and you then need to find all posts where you inserted the snippet and change it for the new working code.
Im always having to reinsert new code into my fb social widgets because they cease to function...
Not viable unless you take it into consideration. Only insert in spaces where oyu wil notice it when it stops working
As Facebook Answers answered, you cannot really style it with a custom CSS, nor via JS, as the activity feed widget creates an iframe.
The info from martincarlin87 is useful, but that is not exactly what you get with the Activity Plugin, which is what you meant I guess:
http://developers.facebook.com/docs/reference/plugins/activity/
For using this you cannot really interact with the Facebook API, it is a little world apart. By now... (July 12th 2012)
Facebook PHP SDK: https://github.com/facebook/php-sdk
Comes with some simple examples, I would suggest uploading it to your server and tinkering with it, Facebook has a steep learning curve but here at Stack Overflow there is even a Facebook section: facebook.stackoverflow.com so just take each step at a time and if you can't get it by reading the facebook docs: developers.facebook.com then you can always ask here and I'm sure someone will be able to help you.
Getting Started: http://developers.facebook.com/docs/reference/php/
Once you have made an app, you add it to your fan page and then you will be abel to test what information you can get using the Graph API Explorer: https://developers.facebook.com/tools/explorer
That post you refer to is a red herring I'm afraid. If you put any HTML between the activity tags it gets rendered BEFORE the iframe is added. So its a no starter, from what I can see. However, I eventually found a solution, which I gave on that thread. I am repeating it here in case somebody searching doesn't see the other thread.
I managed to customise an Activity plugin, after a great deal of effort.
You can see the result here:
http://www.quniverse.co.uk/shopdata/about_us.php
Feel free to post a comment on that site, it exists purely for test purposes so I'm not fussed what goes up there provided its clean.
I explain how I achieved this in the blog article posted here:
http://facebookanswers.co.uk/?p=302
To summarise briefly:
You cannot insert CSS into the activity plugin.
Rely on the fact it has a transparent background, and supply your own.
Turn off the header and supply your own.
You can specify a light or a dark font, a few fontfaces and a border colour.
If you read the blog article you will get a full explanation.

Can Facebook/Google cause site to not load?

This might sound like a silly question, but yesterday none of our sites would load. After contacting the hosting company they said that
In this instance, it would appear that your site is hanging waiting for a response from an external component / website (looking at your code, I see references to Facebook, Google and online apps at a glance).
We've never had this problem before and the sites have been using the social plugins for months so I wondered if anybody else experienced this problem yesterday?
Thanks
Without knowing the details, I can tell you that when you load Javascript via <script></script> tags the browser waits for the request to finish before moving on. So, if you load JS files in the <head></head> section, nothing will render on-screen until they load successfully. 404s here will kill you, as will slow connections.
If you have in-line JS, it's best to put it at the very bottom of your <body></body> section so that it does not interrupt browser rendering. Do this for JS files in your <head></head> section if your code architecture allows it.
Just a random stab in the dark but I wonder if this was related in any way to the anonymous threats on Facebook. I have experienced similar problems before with a twitter plugin, it could take a few seconds for the plugin to ping back the tweets and the rest of the page was hanging while twitter was doing their thing.
To ensure this doesn't happen again you could call your social plugin's on page load if its a viable solution. At the end of the day do you want your page load time to depend on other services outside of your control or not?
edit: #Jason McClellan 's answer is spot on. I believe the combo of out answers sort out your question. I Never include script in the head if I don't control the resource! That can indefinitely hang your page.
edit2: Don't know why I'm getting down rated for this answer was just trying to relate it to an experience of mine. I'm not extremely experienced with Facebook plugins but when I was noticing an issue with my twitter plugin, I did exactly what #Jason McClellan has said with his answer to make sure that all your html gets rendered before the scripts are even requested, then ensured that the page could display correctly with or without the twitter content so the user experience was not dependant on an external resource. The twitter plugin I was using had an initiation function which I had to call to fire up the script. The simplest way to call this would be with:
<body onload='init()'>
if you have another script you are loading with the page you could use something along the lines of
window.onload = function() {
init();
}
from within your external script.
Sorry I can't give an answer specific to the Facebook plugin. Maybe someone with more experience in the Facebook plugins could elaborate in the comments :D
edit3: also this community based tool suggests that quiet a few people where seeing a bit of facebook downtime when you experienced it - Facebook status at DownRightNow
edit4: I dont have the "Privelages" to comment on Jason's q as im pretty new here ... but in answer to your comment there, the stuff in the head that you describe is what loads in the schema for facebook mark-up language (fbml) , so a mark-up language like html, but geared up for you to use the facebook api. So you can do stuff like:
<fb:comments xid="titans_comments" canpost="true" candelete="false" returnurl="http://apps.facebook.com/myapp/titans/">
<fb:title>Talk about the Titans</fb:title>
</fb:comments>
To wack some comments straight into your page - fbml developers guide
Your comment there also suggests you are not including a script for your page to load so it renders our previous answers not as important, you need to include the fbml stuff in the head before you use fbml in your page so don't move it :D
but #jason McClellan's answer is something that everyone should do on their project (unless there is a reason not to) as it allows for the user to see something before the browser fires off requests for the scripts. At the end of the day we're in this game to make pretty stuff for our users!
Good luck

How does the Google adsense works?

can you tell me, how does the Google Ad sense works?
please explain me in brief..
There's quite a bit of information available from Google on the subject.
You want to know how to "use" it? or its algorithms? For the first one, they have a page for that, for the later one, I don't think you will even be able to figure it out:)
You place a javascript code in your site, and whenever someone visits your site, Google puts an ad in place. If the user clicks the add, you get money for it.
I assume your question is orientated around Google's contextual targeting.
In brief: Google sends a bot to read each page of your website. It looks at all the terms on the page and discards common words and instead tries to understand themes. Google also looks at adgroups of AdWords advertisers and looks to build an understanding of the themes of the keywords. Another algorithm pairs the two together so that relevant ads appear on a webpage.