Contenu connexe Similaire à Facebook für PHP Entwickler - phpugffm Similaire à Facebook für PHP Entwickler - phpugffm (20) Plus de Stephan Hochdörfer Plus de Stephan Hochdörfer (20) Facebook für PHP Entwickler - phpugffm2. Facebook für (PHP) Entwickler
Über mich
Stephan Hochdörfer, bitExpert AG
Department Manager Research Labs
S.Hochdoerfer@bitExpert.de
@shochdoerfer
http://www.facebook.com/shochdoerfer
3. Facebook für (PHP) Entwickler
Facebook Fakten
Mehr als 800 Millionen aktive User
Mehr als 900 Millionen Objekte (Pages, Gruppen, Events,...)
~20 Millionen Apps werden pro Tag installiert
Pro Monat nutzen mehr als 500 Millionen User FB Apps
~350 Millionen User mit mobilen Clients
Quelle: https://www.facebook.com/press/info.php?statistics
6. Facebook für (PHP) Entwickler
Facebook Social Plugins – Like Button
<div id="fb-root"></div>
<script>(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {return;}
js = d.createElement(s); js.id = id;
js.src =
"//connect.facebook.net/de_DE/all.js#xfbml=1&appId=0815";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
<div class="fb-like" data-href="http://www.phpugffm.de" data-
send="false" data-width="450" data-show-faces="true"></div>
18. Facebook für (PHP) Entwickler
Facebook PHP SDK
<?php
require '../lib/facebook/facebook.php';
$facebook = new Facebook(array(
'appId' => 'YOUR_APP_ID',
'secret' => 'YOUR_APP_SECRET',
));
// Get User ID
$user = $facebook->getUser();
20. Facebook für (PHP) Entwickler
Facebook PHP SDK – PSR-0 work-a-round
<?php
require_once(__DIR__.'/facebook.php');
/**
* Facebook client, PSR-0 style
*/
class Facebook_Client extends Facebook
{
}
21. Facebook für (PHP) Entwickler
Facebook PHP SDK – PSR-0 work-a-round
<?php
$facebook = new Facebook_Client(array(
'appId' => 'YOUR_APP_ID',
'secret' => 'YOUR_APP_SECRET',
));
// Get User ID
$user = $facebook->getUser();
22. Facebook für (PHP) Entwickler
Die erste Facebook App
<!DOCTYPE html>
<html>
<body>
<div id="fb-root"></div>
<script type="text/javascript">
window.fbAsyncInit = function() {
FB.init({
appId: 'YOUR_APP_ID', status: true, cookie: true, xfbml: true, oauth:
true
});
};
(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {return;}
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/de_DE/all.js#xfbml=1&appId=YOUR_APP_ID";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>
<div class="wrapper"></div>
</body>
</html>
23. Facebook für (PHP) Entwickler
Die erste Facebook App
<!DOCTYPE html>
<html>
<body>
<div id="fb-root"></div>
<script type="text/javascript">
window.fbAsyncInit = function() {
FB.init({
appId: 'YOUR_APP_ID', status: true, cookie: true, xfbml: true, oauth:
true
});
};
(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {return;}
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/de_DE/all.js#xfbml=1&appId=YOUR_APP_ID";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>
<div class="wrapper"></div>
</body>
</html>
24. Facebook für (PHP) Entwickler
Die erste Facebook App
<!DOCTYPE html>
<html>
<body>
<div id="fb-root"></div>
<script type="text/javascript">
window.fbAsyncInit = function() {
FB.init({
appId: 'YOUR_APP_ID', status: true, cookie: true, xfbml: true, oauth:
true
});
};
(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {return;}
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/de_DE/all.js#xfbml=1&appId=YOUR_APP_ID";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>
<div class="wrapper"></div>
</body>
</html>
25. Facebook für (PHP) Entwickler
Die erste Facebook App
<!DOCTYPE html>
<html>
<body>
<div id="fb-root"></div>
<script type="text/javascript">
window.fbAsyncInit = function() {
FB.init({
appId: 'YOUR_APP_ID', status: true, cookie: true, xfbml: true, oauth:
true
});
};
(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {return;}
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/de_DE/all.js#xfbml=1&appId=YOUR_APP_ID";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>
<div class="wrapper"></div>
</body>
</html>
26. Facebook für (PHP) Entwickler
Die erste Facebook App
Wie kommt die App auf die Fanpage?
27. Facebook für (PHP) Entwickler
Die erste Facebook App – Fanpage Integration
https://www.facebook.com/dialog/pagetab
?app_id=YOUR_APP_ID&next=YOUR_URL
30. Facebook für (PHP) Entwickler
Request Flow
HTTP Post Request
+ signed_request
User / Facebook Applikations-
Browser Fanpage server
31. Facebook für (PHP) Entwickler
Request Flow - signed_request
sicherer Datenaustausch zw. Facebook und der eigenen
App
Konkatenation HMAC SHA-256 Signatur, einem Punkt (.)
und einem base64 kodierten JSON Objekt
Zum Dekodieren wird das App Secret benötigt!
Enthält Informationen zum User, Fanpage und Deeplink
Parameter
33. Facebook für (PHP) Entwickler
Login / Authentifzierung
FB.getLoginStatus(function(response) {
if (response.authResponse) {
// User eingeloggt
} else {
// Versuchen den User einzuloggen
FB.login(function(response) {
if(response.authResponse) {
if(response.perms) {
// ist eingeloggt....
}
}
}, {
perms: 'publish_stream, offline_access'
});
}
});
34. Facebook für (PHP) Entwickler
Login / Authentifzierung – Signed Request
Neuer signed_request nach dem Login!
35. Facebook für (PHP) Entwickler
Login / Authentifzierung – User Perms
user_about_me, user_activities, user_birthday,
user_checkins, user_education_history, user_events,
user_groups, user_hometown, user_interests, user_likes,
user_location, user_notes, user_online_presence,
user_photo_video_tags, user_photos, user_questions,
user_relationships, user_relationships_details,
user_religion_politics, user_status, user_videos,
user_website, user_work_history, email
36. Facebook für (PHP) Entwickler
Login / Authentifzierung – Extended Perms
read_friendlists, read_insights, read_mailbox,
read_requests, read_stream, xmpp_login,
ads_management, create_event, manage_friendlists,
manage_notifications, offline_access, publish_checkins,
publish_stream, rsvp_event, sms, publish_actions,
manage_pages
37. Facebook für (PHP) Entwickler
The Graph API presents a simple,
consistent view of the Facebook social
graph, uniformly representing objects in
the graph and the connections between
them.
38. Facebook für (PHP) Entwickler
Graph API – Wer bin ich?
https://graph.facebook.com/me?
access_token=
39. Facebook für (PHP) Entwickler
Graph API – Wer sind meine Freunde?
https://graph.facebook.com/me/friends?
access_token=
40. Facebook für (PHP) Entwickler
Graph API – Was mag ich?
https://graph.facebook.com/me/likes?
access_token=
41. Facebook für (PHP) Entwickler
Graph API (JS Style)
FB.api('/me', function(response) {
alert(response.name);
});
42. Facebook für (PHP) Entwickler
Graph API (JS Style)
var msg = 'Hello phpugffm!';
FB.api('/me/feed', 'post', { message: msg }, function(response) {
if (!response || response.error) {
alert('Error occured');
} else {
alert('Post ID: ' + response.id);
}
});
43. Facebook für (PHP) Entwickler
Graph API (PHP Style)
<?php
$post = array(
'message' => 'Hello phpugffm!',
);
$facebook->api('/me/feed', 'post', $post);
44. Facebook für (PHP) Entwickler
FQL enables you to use a SQL-style
interface to query the data exposed by
the Graph API.
45. Facebook für (PHP) Entwickler
FQL Tabellen
album, application, apprequest, checkin, comment,
comments_info, connection, cookies, developer, domain,
domain_admin, event, event_member, family, friend,
friend_request, friendlist, friendlist_member, group,
group_member, insights, like, link, link_stat, mailbox_folder,
message, note, notification, object_url, page, page_admin,
page_blocked_user, page_fan, permissions,
permissions_info, photo, photo_tag, place, privacy,
privacy_setting, profile, question, question_option,
question_option_votes, review, standard_friend_info,
standard_user_info, status, stream, stream_filter,
stream_tag, thread, translation, unified_thread,
unified_thread_action, user, ...
46. Facebook für (PHP) Entwickler
FQL (JS Style)
FB.api({
method: 'fql.query',
query: 'select first_name,last_name,email from user
where uid = me()'
},
function(response) {
console.log(response);
});
47. Facebook Apps: Entwicklungsleitfaden
FQL (JS Style) - Subselect
FB.api({
method: 'fql.query',
query: 'select first_name,last_name,email from user
where uid IN (SELECT uid2 FROM friend WHERE uid1 =
me())'
},
function(response) {
console.log(response);
});
48. Facebook für (PHP) Entwickler
Wallpost (JS Style)
var pageId = 12345678;
var post = {
message: '',
name: 'Der Name des Links',
caption: 'Die Beschreibung',
link: 'http://www.facebook.com/'+pageId,
attribution: 'Meine App'
};
FB.api('/'+pageId+'/feed', 'post', post);
49. Facebook für (PHP) Entwickler
Wallpost (PHP Style)
<?php
$pageId = 12345678;
$post = array(
'message' => '',
'name' => 'Der Name des Links',
'caption' => 'Die Beschreibung',
'link' => 'http://www.facebook.com/'.$pageId,
'attribution' => 'Meine App'
);
$facebook->api('/'.$pageId.'/feed', 'post', $post);