Author Avatar

Fabrizio S.

0

Share post:

E quindi veniamo adesso a questo capitolo dedicato alle Graph Api che sono il vero cuore di Facebook e le vediamo in questo caso tramite applicazioni Javascript. Ma prima di continuare vi vogliamo stupire con degli effetti speciali andate qui , ma prima assicuratevi di essere loggati su facebook. Come potete vedere l’applicazione avrà restituito il vostro id facebook ma anche il nome che utilizzate su facebook. Quello che avete testato è l’applicazion Graph API Explorer ed è un chiarissimo esempio di quello che facebook è in grado di fare con la tecnologia  Graph Api.

 

Che cosa sono le Graph API

 

Il nome dato a questa tecnologia si rifà a quella matematica da cui trae spunto. Le Graph API sono difatto dei grafi matematici che funzionano con tecnoclogia facebook, ossia sono un insieme interconnesso di nodi che sono collegati fra di loro da delle connessioni. Cosi’ ad esempio il  nodo me  , che contiene tutti i nostri dati, collegherà il nodo friends,   che contiene tutti i dati dei nostri amici. Questo per farvi comprendere, mentre la definizione ufficiale, ossia quella data da Faceboo è

L’API Graph è una semplice API HTTP-based che permette di accedere al grafo sociale di Facebook, che rappresenta in modo uniforme gli oggetti del grafico e le connessioni tra di loro. Più altre API di Facebook sono basati sulle API Graph.

 

 

Vediamo un esempio ancora più specifico ossia prendiamo ad esempio la pagina it di HTML dell’omonimo sito. e digitiamo

http://graph.facebook.com/html.it

Quello che otterremo sarà il seguente risultato

{
 "id": "93192098615",
 "about": "www.html.it",
 "app_id": "0",
 "can_post": false,
 "category": "Computers/internet website",
 "checkins": 0,
 "company_overview": "HTML.it \u00e8 il sito italiano di riferimento per Web developer e programmatori, nonch\u00e9 uno dei pi\u00f9 visitati e conosciuti siti italiani di informazione tecnologica.\n\nNato nel 1997, HTML.it rappresenta uno dei principali brand del Web italiano per audience e riconoscibilit\u00e0, attorno al quale gravita la prima e pi\u00f9 ampia community di professionisti IT.",
 "cover": {
 "cover_id": "10150951355603616",
 "source": "http://sphotos-b.ak.fbcdn.net/hphotos-ak-ash4/s720x720/292494_10150951355603616_300072086_n.jpg",
 "offset_y": 0,
 "offset_x": 0
 },
 "has_added_app": false,
 "is_community_page": false,
 "is_published": true,
 "likes": 55311,
 "link": "http://www.facebook.com/HTML.it",
 "name": "HTML.it",
 "talking_about_count": 60,
 "username": "HTML.it",
 "website": "http://www.html.it",
 "were_here_count": 0
 }

Che sono i dati appunto della pagina facebook html.it che vedete riportata nel link. Ma quello che invece ci preme sottolineare è il modo in cui questi valori vengono dati ossia una chiave : un valore questa corrispondenza biunivoca viene chiamata JSON. Facciamo un ulteriore passo in avanti nel Grafo, consideriamo di scendere di un livello da Graph API in USER  nel seguendo modo

Facebook APIs › Graph API › User

qui troviamo il nodo me, ossia noi stessi che in questo momento stiamo accedendo ai valori in questione.

https://graph.facebook.com/me

che nel mio caso sono
{
“id”: “xxxxxxxxxxxxxx”,
“name”: “Fabrizio “,
“first_name”: “Fabrizio”,
“last_name”: “xxxxxxxxxxxx”,
“link”: “http://www.facebook.com/xxxxxxxxx”,
“username”: “xxxxxxxx”,
“gender”: “male”,
“relationship_status”: “In a Relationship”,
“significant_other”: {
“name”: “xxxxxxxxx”,
“id”: “xxxxxxx”
},
“timezone”: 2,
“locale”: “it_IT”,
“verified”: true,
“updated_time”: “2013-02-12T22:35:27+0000”
}

Che per ovvi motivi ho in parte oscurato ma che raccontano i dati che voi avete comunicato a Facebook al momento dell’iscrizione o nei vari update, ossia sesso, relazione etc. etc. Ma come potete vedere non compare l’email non è una cancellazione nostra, ma è dovuto al fatto che compare solamente quello che voi avete indicato nella privacy di volere fare comparire. Riprendendo direttamente da facebook e dando per scontato che voi conosciate un minimo l’inglese questo campo comprenderà

 

Name Description Permissions Returns
id The user’s Facebook ID No access_token required string
name The user’s full name No access_token required string
first_name The user’s first name No access_token required string
middle_name The user’s middle name No access_token required string
last_name The user’s last name No access_token required string
gender The user’s gender: female ormale No access_token required string
locale The user’s locale No access_token required string containing the ISO Language Code and ISO Country Code
languages The user’s languages user_likes array of objects containing language id and name
link The URL of the profile for the user on Facebook No access_token required string containing a valid URL
username The user’s Facebook username No access_token required string
age_range The user’s age range; only returned if specifically requested via the fields URL parameter Requires access_token object containing min andmax for the age range; Possible age ranges are 13-17, 18-20, and 21+; max is not set if the age is 21+
third_party_id An anonymous, but unique identifier for the user; only returned if specifically requested via the fields URL parameter Requires access_token string
installed Specifies whether the user has installed the application associated with the app access token that is used to make the request; only returned if specifically requested via thefields URL parameter Requires app access_token object containing type(this is always “user”), id(the ID of the user), and optional installed field (always true if returned); The installed field is only returned if the user has installed the application, otherwise it is not part of the returned object
timezone The user’s timezone offset from UTC Available only for the current user number
updated_time The last time the user’s profile was updated; changes to thelanguageslinktimezone,verifiedinterested_in,favorite_athletes,favorite_teams, andvideo_upload_limits are not not reflected in this value Requires access_token string containing an ISO-8601 datetime
verified The user’s account verification status, either true or false(see below) Requires access_token boolean
bio The user’s biography user_about_me orfriends_about_me string
birthday The user’s birthday user_birthday orfriends_birthday Date string inMM/DD/YYYY format
cover The user’s cover photo (must be explicitly requested usingfields=cover parameter) Requires access_token array of fields idsource, and offset_y
currency The user’s currency settings (must be explicitly requested using a fields=currency URL parameter) Requires access_token object with fieldscurrency (detailed here),id
devices A list of the user’s devices beyond desktop User access_token required; only available for friends of the current user array of objects containingos which may be a value of ‘iOS’ or ‘Android’, along with an additional fieldhardware which may be a value of ‘iPad’ or ‘iPhone’ if present, however may not be returned if we are unable to determine the hardware model – Note: this is a non-default field and must be explicitly specified as shown below
education A list of the user’s education history user_education_history orfriends_education_history array of objects containingyear and type fields, andschool object (nameid,type, and optional year,degreeconcentrationarray, classes array, andwith array )
email The proxied or contact email address granted by the user email string containing a valid RFC822 email address – note: this field may benull if no email address is available for the user
hometown The user’s hometown user_hometown orfriends_hometown object containing name andid
interested_in The genders the user is interested in user_relationship_details orfriends_relationship_details array containing strings
location The user’s current city user_location orfriends_location object containing name andid
political The user’s political view user_religion_politics orfriends_religion_politics string
payment_pricepoints The payment price-points available for that user User access_token array of objects containinguser_pricecredits andlocal_currency fields
favorite_athletes The user’s favorite athletes; this field is deprecated and will be removed in the near future user_likes or friends_likes array of objects containingid and name fields
favorite_teams The user’s favorite teams; this field is deprecated and will be removed in the near future user_likes or friends_likes array of objects containingid and name fields
picture The URL of the user’s profile pic (only returned if you explicitly specify a ‘fields=picture’ param) access_token required for pages with whitelisting/targeting restrictions, otherwise noaccess_token required string; If the “October 2012 Breaking Changes” migration setting is enabled for your app, this field will be an object with the urland is_silhouette fields;is_silhouette is true if the user has not uploaded a profile picture
quotes The user’s favorite quotes user_about_me orfriends_about_me string
relationship_status The user’s relationship status:SingleIn a relationship,EngagedMarriedIt's complicatedIn an open relationshipWidowed,SeparatedDivorcedIn a civil unionIn a domestic partnership user_relationships orfriends_relationships string
religion The user’s religion user_religion_politics orfriends_religion_politics string
security_settings Information about security settings enabled on the user’s account (must be explicitly requested using afields=security_settingsURL parameter) Available only for the current user object containingsecure_browsing (an object with a single field,enabled, which indicates whether Secure Browsing is enabled)
significant_other The user’s significant other user_relationships orfriends_relationships object containing name andid
video_upload_limits The size of the video file and the length of the video that a user can upload; only returned if specifically requested via thefields URL parameter Requires access_token object containing lengthand size of video
website The URL of the user’s personal website user_website orfriends_website string containing a valid URL
work A list of the user’s work history user_work_history orfriends_work_history array of objects containingemployerlocation,positionstart_dateand end_date fields

In alcuni di questi campi vedete Requires access_token ossia quello che vi dicevamo sopra, quindi alcuni campi rimangono riservati e per averli occorre richiedere il token di accesso , ossia dovete essere all’interno dell’applicazione stessa, altrimenti rimangono dati non accessibili.

E siccome come vi abbiamo detto sopra stiamo parlando di grafi ogni nodo ha la sua connessione ossia il modo in cui si connette ad un altro nodo che in questo caso sono, anche qui sono ovviamente in inglese dato che l’abbiamo riprese dal sito ufficiale.

 

Name Description Permissions Returns
accounts The Facebook apps and pages owned by the current user. manage_pages yieldsaccess_tokens that can be used to query the Graph API on behalf of the app/page array of objects containing account name,access_tokencategoryid
achievements The achievements for the user. user_games_activity orfriends_games_activity. array of achievement(instance) objects
activities The activities listed on the user’s profile. user_activities orfriends_activities. array of objects containing activity idname,category and create_time fields.
albums The photo albums this user has created. user_photos orfriends_photos. array of Album objects.
apprequests The user’s outstanding requests from an app. Requires app access_token. array of app requests for the user within that app.
books The books listed on the user’s profile. user_likes orfriends_likes. array of objects containing book idname,category and create_time fields.
checkins The places that the user has checked-into. user_checkins orfriends_checkins. array of Checkin objects
events The events this user is attending. user_events orfriends_events. array of objects containing event idname,start_timeend_timelocation andrsvp_status defaulting to the past two weeks.
family The user’s family relationships user_relationships. array of objects containing idname, andrelationship fields.
feed The user’s wall. read_stream array of Post objects containing (up to) the last 25 posts.
friendlists The user’s friend lists. read_friendlists. array of objects containing id and name fields of the friendlist.
friendrequests The user’s incoming friend requests. user_requests. array of objects containing tofrommessage,created_time and unread fields of the friend request
friends The user’s friends. Any valid access_token of the current session user. array of objects containing friend id and namefields.
games Games the user has added to the Arts and Entertainment section of their profile. user_likes array of objects containing idname,category, and created_time
groups The Groups that the user belongs to. user_groups orfriends_groups. An array of objects containing theversion(old-0 or new Group-1), nameid,administrator (if user is the administrator of the Group) and bookmark_order(at what place in the list of group bookmarks on the homepage, the group shows up for the user).
home The user’s news feed. read_stream. array of Post objects containing (up to) the last 25 posts.
inbox The Threads in this user’s inbox. read_mailbox. array of thread objects
interests The interests listed on the user’s profile. user_interests orfriends_interests. array of objects containing interest idname,category and create_time fields.
likes All the pages this user has liked. user_likes orfriends_likes. array of objects containing like idname,category and create_time fields.
links The user’s posted links. read_stream. array of Link objects.
locations Posts, statuses, and photos in which the user has been tagged at a location, or where the user has authored content (i.e. this excludes objects with no location information, and objects in which the user is not tagged). See documentation of thelocation_posttable for more detailed information on permissions. user_photos,friend_photos,user_status,friends_status,user_checkins, orfriends_checkins. array of objects containing the idtype,placecreated_time, and optionalapplication and tags fields.
movies The movies listed on the user’s profile. user_likes orfriends_likes. array of objects containing movie idname,category and create_time fields.
music The music listed on the user’s profile. user_likes orfriends_likes. array of objects containing music idname,category and create_time fields.
mutualfriends The mutual friends between two users. Any valid access_token of the current session user. array of objects containing friend id and namefields.
notes The user’s notes. user_notes. array of Note objects.
notifications App notifications for the user. Any valid access_token of the current session user. array of objects containing template andhref.
outbox The messages in this user’s outbox. read_mailbox. array of messages
payment_transactions The Facebook Payments orders the user placed with an application. See the Payments APIfor more information. app access_token array of payment objects.
payments The Facebook Credits orders the user placed with an application. See the Credits API for more information. app access_token array of order objects.
permissions The permissions that user has granted the application. None. array containing a single object which has the keys as the permission names and the values as the permission values (1/0) – Permissions with value 0 are omitted from the object by default; also includes a type field which is alwayspermissions if the query param metadata=1 is passed.
photos Photos the user (or friend) is tagged in. user_photo_video_tags orfriends_photo_video_tags. array of Photo objects.
photos/uploaded All of the updates photos of a user. Cursor based pagination. user_photos array of Photo objects containing all of the photos a user has uploaded in order of upload time.
picture The user’s profile picture. No access_token required. HTTP 302 redirect to URL of the user’s profile picture (use ?type=square | small | normal |large to request a different photo). If you specify ?redirect=false, this connection will return the URL of the profile picture without a 302 redirect. Additionally, you can specify widthand height URL parameters to request a picture of a specific size, however the returned picture is not guaranteed to be exactly the requested size. Specifying width and heightwill return an available profile picture closest to the requested size and requested aspect ratio. If only width or height is specified, we will return a picture whose width or height is closest to the requested size, respectively; ifwidth=height, we will always return a square picture. If the “October 2012 Breaking Changes” migration setting is enabled for your app, this connection will return a JSON object with url,widthheight, and is_silhouette fields, where the width and height specify the actual dimensions of the returned picture;is_silhouette is a boolean which specifies whether the profile picture is the default picture (i.e. the user has not uploaded a profile picture).
pokes The user’s pokes. read_mailbox. an array of objects containing tofrom,created_time and type fields.
posts The user’s own posts. Any valid access_token orread_stream to see non-public posts. array of Post objects.
questions The user’s questions. user_questions array of Question objects.
scores The currentscores for the user in games. user_games_activity orfriends_games_activity. array of objects containing user,applicationscore and type.
sharedposts Returns shares of the object. Cursor based pagination. read_stream array of Post objects.
statuses The user’s status updates. read_stream. An array of Status message objects.
subscribedto People you’re subscribed to. Any valid access_token array of objects containing user id and namefields.
subscribers The user’s subscribers. Any valid access_token array of objects containing user id and namefields.
tagged Posts the user is tagged in. read_stream array of objects containing idfromto,picturelinknamecaptiondescription,propertiesiconactionstype,applicationcreated_time, andupdated_time
television The television listed on the user’s profile. user_likes orfriends_likes. array of objects containing television idname,category and create_time fields.
updates The updates in this user’s inbox. read_mailbox. array of messages
videos The videos this user has been tagged in. user_videos orfriends_videos. array of Video objects.

sperando che nel frattempo facebook non abbia cambiato i collegamenti che vi abbiamo indicato…Come potete vedere in un campo è indicata chiaramente la parola permission, ossia i permessi che dovete avere e quindi dovete avere richiesto per fare si che questa connessione funzioni, ma ve la illustreremo sicuramente in una delle prossime guide.

Per esempio se qui sopra cliccate Friends sarete rimandati ad una pagina dove vi è indicato l’applicazione Graph Explorer da cliccare facendolo otterrete tutti i vostri amici in chiave JSONS.

 

Vi illustriamo brevemente qualche parametro di queste connessioni come ad esempio

friendlist

Per creare una lista di amici per un utente mediante una richiesta HTTP POST con PROFILE_ID/friendlist con manage_friendlist permission e i seguenti parametri dovrete fare

Parameter Description Type Required
name Friend list name. Maximum 25 characters string yes
se l’operazione è andata a buon fine otterrete

Name Description Type
id The new friend list ID string

 

In ogni modo cliccate qui per trovare le reference ufficiali  di friend list  piu’ dettagliate

 

like

Potete leggere una pagina che l’utente ha nei liked attraverso GET to /PROFILE_ID/likes con l’user_likes or friends likes permission. Per esempio

 

https://graph.facebook.com/me/likes

 

mutalfriends

 

mutualfriends

Puoi leggere la lista di tuo User mutual friends mediante HTTP GET to /PROFILE_ID/mutualfriends/FRIEND_ID  con ogni accesso valido   access_token della corrente sessione di user per esempio  se tu e  Dhiren Patel  avete amici in comune

https://graph.facebook.com/me/mutualfriends/1207059

 

No eh …:)

 

Ce ne sarebbero molti altri ovviamente da esaminare ma concludiamo con

 

payment_transactions

 

In quanto con i facebook credits se prenderà piede questa sarà la vera rivoluzione del web, anche se in Italia ancora non ha praticamente preso piede e per quello che abbiamo visto anche all’estero le grandi case produttrici di applicazioni facebook ancora non sembrano particolarmente stimolate. In pratica si tratta di avere dei crediti che utilizzerete nei vari giochi, questi crediti poi possono essere convertiti nella vostra moneta nazionale, tramite i normali sistemi di credito del web come PayPal o altro. Ma c’e’ da fare delle doverose precisazioni. Leggiamo infatti da facebook

 

Questo documento descrive una tecnologia che è ancora nella sua fase di progettazione definitiva e sono soggette a modifiche. Stiamo migrando tutti gli sviluppatori di giochi di tela nel terzo trimestre di quest’anno e vogliamo fornire tempo sufficiente per voi a rivedere questa documentazione prima di noi lanciamo i pagamenti in valuta locale. Dopo il lancio, gli sviluppatori avranno un minimo di 90 giorni di tempo per implementare l’infrastruttura dei pagamenti aggiornata di continuare ad accettare pagamenti. Nelle prossime settimane, vi forniremo ulteriori aggiornamenti su quando si può iniziare l’integrazione.

 

 

Purtroppo al momento non sono state fatte le integrazioni sopra promesse

 

Per recuperare tutte le transazioni per un determinato utente è possibile interrogare la seguente richiesta Graph API:

 

https://graph.facebook.com/USER_ID/payment_transactions?access_token=APP_ACCESS_TOKEN

E un possibile esempio di risposta potrebbe essere

{
 "data": [
 {
 "id": "312474835534988",
 "user": {
 "name": "Marie Utilisatrice",
 "id": "172347878787877"
 },
 "application": {
 "name": "In Your Village",
 "namespace": "inyourvillage",
 "id": "40478799879398899"
 },
 "actions": [
 {
 "type": "charge",
 "status": "completed",
 "currency": "USD",
 "amount": "3.98",
 "time_created": "2012-12-06T13:28:21+0000",
 "time_updated": "2012-12-06T13:28:23+0000"
 }
 ],
 "refundable_amount": {
 "currency": "USD",
 "amount": "3.98"
 },
 "items": [
 {
 "type": "IN_APP_PURCHASE",
 "product": "http:\/\/inyourvillage.com\/og\/money",
 "quantity": 2
 }
 ],
 "request_id": "abcd_221159",
 "country": "US",
 "created_time": "2012-12-06T13:28:21+0000",
 "payout_foreign_exchange_rate":1
 },
 {
 "id": "301210783328056",
 "user": {
 "name": "Marie Utilisatrice",
 "id": "172347878787877"
 },
 "application": {
 "name": "In Your Village",
 "namespace": "inyourvillage",
 "id": "40478799879398899"
 },
 "actions": [
 {
 "type": "charge",
 "status": "inited",
 "currency": "USD",
 "amount": "0.10",
 "time_created": "2012-11-16T05:08:20+0000",
 "time_updated": "2012-11-16T05:08:20+0000"
 }
 ],
 "refundable_amount": {
 "currency": "USD",
 "amount": "0.00"
 },
 "items": [
 {
 "type": "IN_APP_PURCHASE",
 "product": "http:\/\/inyourvillage.com\/og\/money",
 "quantity": 1
 }
 ],
 "request_id": "abcde_221159",
 "country": "US",
 "created_time": "2012-11-16T05:08:20+0000",
 "payout_foreign_exchange_rate":1
 }
 ],
 "paging": {
 "previous": "https:\/\/graph.facebook.com\/172347878787877\/payment_transactions?access_token=APP_ACCESS_TOKEN&limit=1000&since=1354800501&__paging_token=40478799879398899&__previous=1",
 "next": "https:\/\/graph.facebook.com\/172347878787877\/payment_transactions?access_token=APP_ACCESS_TOKEN&limit=1000&until=1353042500&__paging_token=40478799879398899"
 }
}

Ovviamente sulle Graph API ci sarebbe molto di piu' da scrivere, ma per il momento ci fermiamo qui. Nelle prossime guide vi parleremo di FQL e l'integrazione fra social e web
Creare applicazioni facebook con Javascript Method FB.
La gestione degli errori in runtime php, php.ini e .htaccess