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 (6 votes, average: 4.33 out of 5)
Loading ... Loading ...
If you found this post useful, please consider a small donation.

9 Responses to “Developing a Facebook Application for absolute beginners – step 5”

  1. lordkryss on October 9th, 2009 5:58 pm

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

  2. Emanuele Feronato on October 9th, 2009 6:16 pm

    ups… :)

  3. Ruslan on October 10th, 2009 6:26 pm

    Can we make AS3 applications using Facebook API ?

  4. davide on October 16th, 2009 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 19th, 2009 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 21st, 2009 6:32 am

    its really helpful for me … thanks

  7. Jack on November 4th, 2009 3:29 pm

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

  8. Facebook Applications Developer on November 6th, 2009 3:23 pm

    This article will be a good start for biggners.

  9. Mohsin on November 14th, 2009 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 :)

Leave a Reply




flash games company