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:

invite

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.

Try the application

Rate this post: 1 Star2 Stars3 Stars4 Stars5 Stars (10 votes, average: 4.60 out of 5)
Loading ... Loading ...
Be my fan on Facebook and follow me on Twitter! Exclusive content for my Facebook fans and Twitter followers

This post has 18 comments

  1. lordkryss

    on October 9, 2009 at 5:58 pm

    Hai lasciato l’api key e l’app key che negli altri tutorial hai tolto, dimenticanza?

  2. Emanuele Feronato

    on October 9, 2009 at 6:16 pm

    ups… :)

  3. Ruslan

    on October 10, 2009 at 6:26 pm

    Can we make AS3 applications using Facebook API ?

  4. davide

    on October 16, 2009 at 12:26 pm

    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

  5. thomas

    on October 19, 2009 at 6:14 pm

    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…

  6. Mehedi Hasan

    on October 21, 2009 at 6:32 am

    its really helpful for me … thanks

  7. Jack

    on November 4, 2009 at 3:29 pm

    how can i prompt the Form Dialog before I published in his wall ?

  8. Facebook Applications Developer

    on November 6, 2009 at 3:23 pm

    This article will be a good start for biggners.

  9. Mohsin

    on November 14, 2009 at 2:04 pm

    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 :)

  10. Colin

    on March 12, 2010 at 6:31 pm

    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

  11. David

    on April 7, 2010 at 4:40 pm

    Looks like this code throws an exception error now.. must be a change to Facebook.. throws it in the code, and in your demo.

  12. Bethy

    on April 14, 2010 at 11:45 am

    Very detailed description, a beginner in FA development will make an easy start!

  13. Chris

    on April 20, 2010 at 11:40 am

    Yes, since March 1st notifications_send is no more available:
    http://wiki.developers.facebook.com/index.php/Notifications.send

  14. Arpit

    on September 23, 2010 at 3:26 am

    Awesome.

  15. Ankit Chauhan

    on June 3, 2011 at 3:30 pm

    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

  16. Jeff Mullen

    on July 29, 2011 at 12:50 am

    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.

  17. kashif

    on August 20, 2011 at 1:53 pm

    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.

  18. Jeff Mullen

    on August 29, 2011 at 9:12 am

    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!