Facebook für PHP Entwickler - phpugffm

50
Facebook für (PHP) Entwickler

description

 

Transcript of Facebook für PHP Entwickler - phpugffm

Page 1: Facebook für PHP Entwickler - phpugffm

Facebook für (PHP) Entwickler

Page 2: Facebook für PHP Entwickler - phpugffm

Facebook für (PHP) Entwickler

Über mich

Stephan Hochdörfer, bitExpert AG

Department Manager Research Labs

[email protected]

@shochdoerfer

http://www.facebook.com/shochdoerfer

Page 3: Facebook für PHP Entwickler - phpugffm

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

Page 4: Facebook für PHP Entwickler - phpugffm

Facebook für (PHP) Entwickler

Was kann der Entwickler nutzen?

Page 5: Facebook für PHP Entwickler - phpugffm

Facebook für (PHP) Entwickler

Social Plugins

Page 6: Facebook für PHP Entwickler - phpugffm

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>

Page 7: Facebook für PHP Entwickler - phpugffm

Facebook für (PHP) Entwickler

Mobile Applikationen

Page 8: Facebook für PHP Entwickler - phpugffm

Facebook für (PHP) Entwickler

Facebook Applikationen

Page 9: Facebook für PHP Entwickler - phpugffm

Facebook Apps: Entwicklungsleitfaden

Canvas Applikation

Page 10: Facebook für PHP Entwickler - phpugffm

Facebook Apps: Entwicklungsleitfaden

Seitenreiter Applikation

Page 11: Facebook für PHP Entwickler - phpugffm

Facebook für (PHP) Entwickler

Die erste Facebook Applikation

Wie geht es los?

Page 12: Facebook für PHP Entwickler - phpugffm

Facebook für (PHP) Entwickler

http://developers.facebook.com

Page 13: Facebook für PHP Entwickler - phpugffm

Facebook für (PHP) Entwickler

http://developers.facebook.com/apps

Page 14: Facebook für PHP Entwickler - phpugffm

Facebook für (PHP) Entwickler

Page 15: Facebook für PHP Entwickler - phpugffm

Facebook für (PHP) Entwickler

Page 16: Facebook für PHP Entwickler - phpugffm

Facebook für (PHP) Entwickler

Page 17: Facebook für PHP Entwickler - phpugffm

Facebook für (PHP) Entwickler

Facebook PHP SDK

https://github.com/facebook/php-sdk

Page 18: Facebook für PHP Entwickler - phpugffm

Facebook für (PHP) Entwickler

Facebook PHP SDK<?phprequire '../lib/facebook/facebook.php';

$facebook = new Facebook(array( 'appId' => 'YOUR_APP_ID', 'secret' => 'YOUR_APP_SECRET',));

// Get User ID$user = $facebook->getUser();

Page 19: Facebook für PHP Entwickler - phpugffm

Facebook für (PHP) Entwickler

Facebook PHP SDK

Kein PSR-0? WTF?

Page 20: Facebook für PHP Entwickler - phpugffm

Facebook für (PHP) Entwickler

Facebook PHP SDK – PSR-0 work-a-round<?phprequire_once(__DIR__.'/facebook.php');

/** * Facebook client, PSR-0 style */

class Facebook_Client extends Facebook{}

Page 21: Facebook für PHP Entwickler - phpugffm

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();

Page 22: Facebook für PHP Entwickler - phpugffm

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>

Page 23: Facebook für PHP Entwickler - phpugffm

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>

Page 24: Facebook für PHP Entwickler - phpugffm

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>

Page 25: Facebook für PHP Entwickler - phpugffm

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>

Page 26: Facebook für PHP Entwickler - phpugffm

Facebook für (PHP) Entwickler

Die erste Facebook App

Wie kommt die App auf die Fanpage?

Page 27: Facebook für PHP Entwickler - phpugffm

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

Page 28: Facebook für PHP Entwickler - phpugffm

Facebook für (PHP) Entwickler

Die erste Facebook App – Fanpage Integration

Page 29: Facebook für PHP Entwickler - phpugffm

Facebook Apps: Entwicklungsleitfaden

Fertig :)

Page 30: Facebook für PHP Entwickler - phpugffm

Facebook für (PHP) Entwickler

Request Flow

User / Browser

Facebook Fanpage

Applikations-server

HTTP Post Request+ signed_request

Page 31: Facebook für PHP Entwickler - phpugffm

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

Page 32: Facebook für PHP Entwickler - phpugffm

Facebook für (PHP) Entwickler

Wer ist der User?

Page 33: Facebook für PHP Entwickler - phpugffm

Facebook für (PHP) Entwickler

Login / AuthentifzierungFB.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' });

}});

Page 34: Facebook für PHP Entwickler - phpugffm

Facebook für (PHP) Entwickler

Login / Authentifzierung – Signed Request

Neuer signed_request nach dem Login!

Page 35: Facebook für PHP Entwickler - phpugffm

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

Page 36: Facebook für PHP Entwickler - phpugffm

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

Page 37: Facebook für PHP Entwickler - phpugffm

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.

Page 38: Facebook für PHP Entwickler - phpugffm

Facebook für (PHP) Entwickler

https://graph.facebook.com/me?access_token=

Graph API – Wer bin ich?

Page 39: Facebook für PHP Entwickler - phpugffm

Facebook für (PHP) Entwickler

https://graph.facebook.com/me/friends?access_token=

Graph API – Wer sind meine Freunde?

Page 40: Facebook für PHP Entwickler - phpugffm

Facebook für (PHP) Entwickler

https://graph.facebook.com/me/likes?access_token=

Graph API – Was mag ich?

Page 41: Facebook für PHP Entwickler - phpugffm

Facebook für (PHP) Entwickler

Graph API (JS Style)FB.api('/me', function(response) { alert(response.name);});

Page 42: Facebook für PHP Entwickler - phpugffm

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); }});

Page 43: Facebook für PHP Entwickler - phpugffm

Facebook für (PHP) Entwickler

Graph API (PHP Style)<?php

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

);

$facebook->api('/me/feed', 'post', $post);

Page 44: Facebook für PHP Entwickler - phpugffm

Facebook für (PHP) Entwickler

FQL enables you to use a SQL-style interface to query the data exposed by

the Graph API.

Page 45: Facebook für PHP Entwickler - phpugffm

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, ...

Page 46: Facebook für PHP Entwickler - phpugffm

Facebook für (PHP) Entwickler

FQL (JS Style)

FB.api({ method: 'fql.query', query: 'select first_name,last_name,email from userwhere uid = me()'},function(response) { console.log(response);});

Page 47: Facebook für PHP Entwickler - phpugffm

Facebook Apps: Entwicklungsleitfaden

FQL (JS Style) - Subselect

FB.api({ method: 'fql.query', query: 'select first_name,last_name,email from userwhere uid IN (SELECT uid2 FROM friend WHERE uid1 =me())'},function(response) { console.log(response);});

Page 48: Facebook für PHP Entwickler - phpugffm

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

Page 49: Facebook für PHP Entwickler - phpugffm

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

Page 50: Facebook für PHP Entwickler - phpugffm

Vielen Dank!