Developing a Facebook Application for absolute beginners – step 5
Welcome to the 5th step.
Let’s make a small recap:
Step 1: Creation of the application itself
Step 2: Publishing a text on the user’s status
Step 3: Publishing text, links and images on the user’s wall
Step 4: Inviting friends to use the application
Now it’s time to make the application post a notification to users you invite to join the app.
I mean this one:

The script now is this one:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | <?php require_once 'facebook.php'; $appapikey = 'xxxxx'; $appsecret = 'xxxxx'; $facebook = new Facebook($appapikey, $appsecret); $user_id = $facebook->require_login(); $friends = $facebook->api_client->friends_get(); echo "<p>Hello <fb:name uid=\"$user_id\" useyou=\"false\" linked=\"false\" firstnameonly=\"true\"></fb:name>, you have ".count($friends)." friends"; foreach($friends as $friend){ $infos.=$friend.","; } $infos = substr($infos,0,strlen($infos)-1); $gender=$facebook->api_client->users_getInfo($infos,'sex'); $gender_array = array(); foreach($gender as $gendervalue){ $gender_array[$gendervalue[sex]]++; } $male = round($gender_array[male]*100/($gender_array[male]+$gender_array[female]),2); $female = 100-$male; echo "<ul><li>Males: $male%</li><li>Females: $female%</li></ul>"; $message = "has ".count($friends)." friends. $male% of them are male. $female% are female"; $image = array(); $image[type]="image"; $image[src]="http://www.gamemummy.com/facebook/genderz_demo/genderz.png"; $image[href]="http://apps.facebook.com/genderz_demo/"; $attachment = array(); $attachment[name] = "Try the application!!"; $attachment[href] = "http://apps.facebook.com/genderz_demo/"; $attachment[caption] = "{*actor*} has ".count($friends)." friends"; $attachment[description] = "powered by genderz_demo"; $attachment[media] = array($image); $has_permission = $facebook->api_client->users_hasAppPermission("publish_stream"); if(!$has_permission){ echo "<br /><fb:prompt-permission perms=\"publish_stream\">Publish results on your wall!!</fb:prompt-permission>"; } else{ $facebook->api_client->stream_publish($message,$attachment); } if(isset($_POST[ids])){ $message = "is inviting you to use <a href = \"http://apps.facebook.com/genderz_demo/\">genderz_demo</a>!! Try it!"; $ids_list = implode(",",$_POST[ids]); $facebook->api_client->notifications_send($ids_list,$message,'user_to_user'); echo "<br /><br />Thank you for inviting ".count($_POST[ids])." friends to genderz_demo"; } else { ?> <fb:request-form action="http://apps.facebook.com/genderz_demo/" method="POST" type="genderz_demo" content="Hello. Please use my app. <?php echo htmlentities("<fb:req-choice url=\"http://apps.facebook.com/genderz_demo/\" label=\"Try it!!\"") ?>" > <fb:multi-friend-selector showborder="false" actiontext="Send some spam invites to Genderz Demo!"> </fb:request-form> <?php } ?> |
Lines 68-74 are the same we added at Step 4, but they are in an else condition because they will appear only if I don’t have a variable called ids passed with POST (line 58).
This means I show the invite friends selector only if I haven’t already invited some friends, because when I submit an invitation form, an ids variable is passed with an array containing all of the user IDs of the people I invited.
Now let’s see what happens at lines 59-62, executed only once I submitted the request form.
Line 59: writing my note. Notice as my note stats with “is inviting” and not with “Emanuele Feronato is inviting”, because when I specify user_to_user in the note mode at line 61, the API will add my name by itself.
Line 60: transforming an array into a comma separated value string of all of the user IDs of the people I invited.
Line 61: notifications_send takes as input the list created at line 60, the message created at line 59 and sends the note as user_to_user as explained before.
Finally, line 62 thanks the user for sending some spam :)
And the application is finished… during next step I’ll show you how to finetune it in order to make it seem a professional application, then we’ll see the hardest part: monetization.















(10 votes, average: 4.60 out of 5)









This post has 18 comments
lordkryss
Hai lasciato l’api key e l’app key che negli altri tutorial hai tolto, dimenticanza?
Emanuele Feronato
ups… :)
Ruslan
Can we make AS3 applications using Facebook API ?
davide
ma dobbiamo lasciare l’app key e l’api key oppure dobbiamo toglierle? perchè se le lascio mi funziona tutto se le tolgo non parte più l’applicazione!
info please.
inoltre, come faccio a inserire un’applicazione flash in index.php? grazie
thomas
Hey,
Great stuff.
I can’t get this to work using the iframe. I’m closing all my tags with and have the Scripts linked like it suggests but my permissions aren’t connecting and the boxes (like share) pop up empty. I would like to use the iframe so I can use JQuery instead of class JavaScript/AJAX. This also makes form actions much easier with database connection etc.
Any suggestions? I can post code if necessary…
Mehedi Hasan
its really helpful for me … thanks
Jack
how can i prompt the Form Dialog before I published in his wall ?
Facebook Applications Developer
This article will be a good start for biggners.
Mohsin
Hey Emanuele !!!
You simply rock!!!This article was so helpful and so simple and easy to understand that even a novice like me was able to understand and follow it. Anxiously waiting for the “finetuning to give a professional look” and “monetizing” articles.
Thanks :)
Colin
Thanks for a great tutorial.
I have a question regarding updates of the wall. When the index.php is updated with a new message, how can the app refresh/update the wall without having the user visiting the canvas page again?
All permissions have been enabled.
Thx
David
Looks like this code throws an exception error now.. must be a change to Facebook.. throws it in the code, and in your demo.
Bethy
Very detailed description, a beginner in FA development will make an easy start!
Chris
Yes, since March 1st notifications_send is no more available:
http://wiki.developers.facebook.com/index.php/Notifications.send
Arpit
Awesome.
Ankit Chauhan
Hi
in my facebook.php, I have not seen notifications_send(). So can you please send me the facebook function call or facebook.php
thanks
Jeff Mullen
I am disappointed in this tutorial. It lacks a demonstration of the one technique that is necessary to build any but the most trivial of applications: storing a value on facebook that is associated with a given user when he interacts with the application and retrieving it again during a subsequent interaction. In part 5, an example would be to maintain a count of the friends who had accepted the invitation, that the user who did the inviting could see any time he or she signed onto the application. This would be trivial to implement, but would show what is necessary to write even the most complex of applications. Alas, it is not included in the tutorial, and the tutorial is thus incomplete.
kashif
Man this series of tutorials is awesome, i was searching for such tutorials from many months but never found such as yours which is very easy to understand, Thanks for all this information.
Jeff Mullen
There’s still a step missing! For Part 6, you need to have the application post a count of the number of the user’s friends who actually use the application. This will demonstrate two things that are vital to all but the most trivial of facebook applications:
1) Persistent data (you’re going to have to store that count somewhere)
and
2) An application that responds to successful invites. This is something that even a simple gifting application like iHearts can do, so it shouldn’t be hard to code.
These tutorials are awfully good, but they’d be the next closest thing to perfection if you could just write that one more part!