SlideShare a Scribd company logo
Facebook für (PHP) Entwickler
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
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
Facebook für (PHP) Entwickler




      Was kann der Entwickler nutzen?
Facebook für (PHP) Entwickler




 Social Plugins
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>
Facebook für (PHP) Entwickler




 Mobile Applikationen
Facebook für (PHP) Entwickler




 Facebook Applikationen
Facebook Apps: Entwicklungsleitfaden




 Canvas Applikation
Facebook Apps: Entwicklungsleitfaden




 Seitenreiter Applikation
Facebook für (PHP) Entwickler

 Die erste Facebook Applikation




                    Wie geht es los?
Facebook für (PHP) Entwickler




 http://developers.facebook.com
Facebook für (PHP) Entwickler




 http://developers.facebook.com/apps
Facebook für (PHP) Entwickler
Facebook für (PHP) Entwickler
Facebook für (PHP) Entwickler
Facebook für (PHP) Entwickler

 Facebook PHP SDK




    https://github.com/facebook/php-sdk
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();
Facebook für (PHP) Entwickler

 Facebook PHP SDK




                   Kein PSR-0? WTF?
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
 {
 }
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();
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>
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>
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>
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>
Facebook für (PHP) Entwickler

 Die erste Facebook App




    Wie kommt die App auf die Fanpage?
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
Facebook für (PHP) Entwickler

 Die erste Facebook App – Fanpage Integration
Facebook Apps: Entwicklungsleitfaden




 Fertig :)
Facebook für (PHP) Entwickler

 Request Flow


                                       HTTP Post Request
                                       + signed_request

         User /             Facebook                Applikations-
        Browser              Fanpage                  server
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
Facebook für (PHP) Entwickler




 Wer ist der User?
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'
           });
       }
 });
Facebook für (PHP) Entwickler

 Login / Authentifzierung – Signed Request




  Neuer signed_request nach dem Login!
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
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
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.
Facebook für (PHP) Entwickler

 Graph API – Wer bin ich?




      https://graph.facebook.com/me?
               access_token=
Facebook für (PHP) Entwickler

 Graph API – Wer sind meine Freunde?




https://graph.facebook.com/me/friends?
             access_token=
Facebook für (PHP) Entwickler

 Graph API – Was mag ich?




  https://graph.facebook.com/me/likes?
              access_token=
Facebook für (PHP) Entwickler

 Graph API (JS Style)
 FB.api('/me', function(response) {
   alert(response.name);
 });
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);
   }
 });
Facebook für (PHP) Entwickler

 Graph API (PHP Style)
 <?php

 $post = array(
     'message' => 'Hello phpugffm!',
 );

 $facebook->api('/me/feed', 'post', $post);
Facebook für (PHP) Entwickler




    FQL enables you to use a SQL-style
  interface to query the data exposed by
               the Graph API.
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, ...
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);
 });
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);
 });
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);
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);
Vielen Dank!

More Related Content

PDF
Facebook Apps: Ein Entwicklungsleitfaden - WMMRN
PDF
funP 麻吉 開發者俱樂部十月份聚會
PDF
Desenvolvimento web com Ruby on Rails (parte 6)
PDF
Facebook api além de meros usuários
PPT
Slimme Joomla! Templating Tips en Truuks
PPTX
Drupal 6: Aufbau/API/Best practices
PPTX
PSD to WordPress
PDF
Symfony2, Backbone.js &amp; socket.io - SfLive Paris 2k13 - Wisembly
Facebook Apps: Ein Entwicklungsleitfaden - WMMRN
funP 麻吉 開發者俱樂部十月份聚會
Desenvolvimento web com Ruby on Rails (parte 6)
Facebook api além de meros usuários
Slimme Joomla! Templating Tips en Truuks
Drupal 6: Aufbau/API/Best practices
PSD to WordPress
Symfony2, Backbone.js &amp; socket.io - SfLive Paris 2k13 - Wisembly

Viewers also liked (9)

PDF
Simplify your external dependency management - DPC11
ODP
Testing untestable code - PHPUGFFM 01/11
PDF
Testing untestable code - STPCon11
PDF
Testing untestable code - Herbstcampus12
PDF
Testing untestable code - phpconpl11
PDF
Offline Strategies for HTML5 Web Applications - ipc13
PDF
How to build customizable multitenant web applications - IPC11 Spring Edition
PDF
Phing for power users - frOSCon8
PDF
Building Multi-Tenant and SaaS products in PHP - CloudConf 2015
Simplify your external dependency management - DPC11
Testing untestable code - PHPUGFFM 01/11
Testing untestable code - STPCon11
Testing untestable code - Herbstcampus12
Testing untestable code - phpconpl11
Offline Strategies for HTML5 Web Applications - ipc13
How to build customizable multitenant web applications - IPC11 Spring Edition
Phing for power users - frOSCon8
Building Multi-Tenant and SaaS products in PHP - CloudConf 2015
Ad

Similar to Facebook für PHP Entwickler - phpugffm (20)

PDF
Workshop : Facebook JavaScript SDK
PDF
Charlie Cheever Facebook Developer Garage Uganda
PPTX
Facebook Developer Garage Cyberjaya
PPT
funP 開發者俱樂部 十月份聚會
PPTX
Oauth
PDF
Developing Facebook Application
PDF
Building Facebook Apps
PDF
Build social apps for Facebook
PPTX
Facebook Apps Development 101 (Java)
KEY
23 FACEBOOK APP DEVELOPMENT ESSENTIALS
PDF
fb-researchの舞台裏No.2~技術編~(HatchUp主催 渋谷Facebookアプリ勉強会)
PDF
Facebook App Development
PPT
Creating a Facebook App
PDF
Developing Facebook Application - Nagpur PHP Meetup
KEY
페이스북 소셜 앱 개발 가이드 2011
PDF
Introduction to Facebook Graph API and OAuth 2
PPTX
Dan Lester
PDF
How to write a FaceBook Application
PDF
Facebook App Development
Workshop : Facebook JavaScript SDK
Charlie Cheever Facebook Developer Garage Uganda
Facebook Developer Garage Cyberjaya
funP 開發者俱樂部 十月份聚會
Oauth
Developing Facebook Application
Building Facebook Apps
Build social apps for Facebook
Facebook Apps Development 101 (Java)
23 FACEBOOK APP DEVELOPMENT ESSENTIALS
fb-researchの舞台裏No.2~技術編~(HatchUp主催 渋谷Facebookアプリ勉強会)
Facebook App Development
Creating a Facebook App
Developing Facebook Application - Nagpur PHP Meetup
페이스북 소셜 앱 개발 가이드 2011
Introduction to Facebook Graph API and OAuth 2
Dan Lester
How to write a FaceBook Application
Facebook App Development
Ad

More from Stephan Hochdörfer (20)

PDF
Offline. Na und? Strategien für offlinefähige Applikationen in HTML5 - Herbst...
PDF
Offline strategies for HTML5 web applications - frOSCon8
PDF
Offline Strategies for HTML5 Web Applications - oscon13
PDF
Real World Dependency Injection - oscon13
PDF
Dependency Injection in PHP - dwx13
PDF
Offline Strategien für HTML5 Web Applikationen - dwx13
PDF
Your Business. Your Language. Your Code - dpc13
PDF
Phing for power users - dpc_uncon13
PDF
Offline-Strategien für HTML5 Web Applikationen - wmka
PDF
Offline-Strategien für HTML5 Web Applikationen - bedcon13
PDF
Real World Dependency Injection - phpugffm13
PDF
Testing untestable code - ConFoo13
PDF
A Phing fairy tale - ConFoo13
PDF
Offline strategies for HTML5 web applications - ConFoo13
PDF
Offline-Strategien für HTML5Web Applikationen - WMMRN12
PDF
Testing untestable code - IPC12
PDF
Offline strategies for HTML5 web applications - IPC12
PDF
Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12
PDF
Offline strategies for HTML5 web applications - pfCongres2012
PDF
Wie Software-Generatoren die Welt verändern können - Herbstcampus12
Offline. Na und? Strategien für offlinefähige Applikationen in HTML5 - Herbst...
Offline strategies for HTML5 web applications - frOSCon8
Offline Strategies for HTML5 Web Applications - oscon13
Real World Dependency Injection - oscon13
Dependency Injection in PHP - dwx13
Offline Strategien für HTML5 Web Applikationen - dwx13
Your Business. Your Language. Your Code - dpc13
Phing for power users - dpc_uncon13
Offline-Strategien für HTML5 Web Applikationen - wmka
Offline-Strategien für HTML5 Web Applikationen - bedcon13
Real World Dependency Injection - phpugffm13
Testing untestable code - ConFoo13
A Phing fairy tale - ConFoo13
Offline strategies for HTML5 web applications - ConFoo13
Offline-Strategien für HTML5Web Applikationen - WMMRN12
Testing untestable code - IPC12
Offline strategies for HTML5 web applications - IPC12
Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12
Offline strategies for HTML5 web applications - pfCongres2012
Wie Software-Generatoren die Welt verändern können - Herbstcampus12

Recently uploaded (20)

PDF
Accuracy of neural networks in brain wave diagnosis of schizophrenia
PPTX
Group 1 Presentation -Planning and Decision Making .pptx
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PDF
Machine learning based COVID-19 study performance prediction
PDF
Getting Started with Data Integration: FME Form 101
PPTX
Spectroscopy.pptx food analysis technology
PDF
Assigned Numbers - 2025 - Bluetooth® Document
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
Electronic commerce courselecture one. Pdf
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PPTX
1. Introduction to Computer Programming.pptx
PDF
Approach and Philosophy of On baking technology
PPTX
MYSQL Presentation for SQL database connectivity
PPTX
Tartificialntelligence_presentation.pptx
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Accuracy of neural networks in brain wave diagnosis of schizophrenia
Group 1 Presentation -Planning and Decision Making .pptx
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Per capita expenditure prediction using model stacking based on satellite ima...
Network Security Unit 5.pdf for BCA BBA.
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
Machine learning based COVID-19 study performance prediction
Getting Started with Data Integration: FME Form 101
Spectroscopy.pptx food analysis technology
Assigned Numbers - 2025 - Bluetooth® Document
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Electronic commerce courselecture one. Pdf
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
1. Introduction to Computer Programming.pptx
Approach and Philosophy of On baking technology
MYSQL Presentation for SQL database connectivity
Tartificialntelligence_presentation.pptx
Dropbox Q2 2025 Financial Results & Investor Presentation
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf

Facebook für PHP Entwickler - phpugffm

  • 1. Facebook für (PHP) Entwickler
  • 2. 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
  • 4. Facebook für (PHP) Entwickler Was kann der Entwickler nutzen?
  • 5. Facebook für (PHP) Entwickler Social Plugins
  • 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>
  • 7. Facebook für (PHP) Entwickler Mobile Applikationen
  • 8. Facebook für (PHP) Entwickler Facebook Applikationen
  • 10. Facebook Apps: Entwicklungsleitfaden Seitenreiter Applikation
  • 11. Facebook für (PHP) Entwickler Die erste Facebook Applikation Wie geht es los?
  • 12. Facebook für (PHP) Entwickler http://developers.facebook.com
  • 13. Facebook für (PHP) Entwickler http://developers.facebook.com/apps
  • 14. Facebook für (PHP) Entwickler
  • 15. Facebook für (PHP) Entwickler
  • 16. Facebook für (PHP) Entwickler
  • 17. Facebook für (PHP) Entwickler Facebook PHP SDK https://github.com/facebook/php-sdk
  • 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();
  • 19. Facebook für (PHP) Entwickler Facebook PHP SDK Kein PSR-0? WTF?
  • 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
  • 28. Facebook für (PHP) Entwickler Die erste Facebook App – Fanpage Integration
  • 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
  • 32. Facebook für (PHP) Entwickler Wer ist der User?
  • 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);