!!! Listings zum Artikel "Kontaktaufnahme"
!!! von Jan Krutisch in iX 10/2010, S. 38
!!! Listing 1: Externes über einen iframe
!!! "iframe" bitte kursiv
!!! Listing 2: Like-Button per XFBML
Facebook Test
!!! Listing 3: Benutzernamen einfügen
FB.getLoginStatus(function(response) {
if (response.session) {
FB.api('/me', function(response) {
$('#user-name').html(response.name);
});
}
});
!!! Listing 4: Cookie-Überprüfung mit Ruby
def facebook_cookie(cookie)
return if cookie.nil?
vars = Rack::Utils.parse_nested_query(cookie.sub(/^"(.*)"/,"\\1"))
sig = vars.delete("sig")
payload = vars.to_a.sort_by{|a| a.first }.map{|e| "#{e.first}=#{e.last}" }.join("")
if Digest::MD5.hexdigest(payload + APP_SECRET) != sig
return nil;
else
return vars;
end
end
!!! Listing 5: Benutzung des access_token mit Ruby
!!! "access_token" bitte kursiv
escaped_token = Rack::Utils.escape(ACCESS_TOKEN)
response = RestClient.get("https://graph.facebook.com/me?access_token=#{escaped_token}")
@me = JSON.parse(response.body)
!!! Listing 6: Zugriff auf die Graph-API mit OAuth und Ruby
def client
OAuth2::Client.new(APP_ID, APP_SECRET, :site => 'https://graph.facebook.com')
end
def redirect_uri
uri = URI.parse(request.url)
uri.path = '/auth/facebook/callback'
uri.query = nil
uri.to_s
end
get '/auth/facebook' do
redirect client.web_server.authorize_url(
:redirect_uri => redirect_uri,
:scope => 'email,user_birthday,publish_stream'
)
end
get '/auth/facebook/callback' do
access_token = client.web_server.get_access_token(params[:code], :redirect_uri => redirect_uri)
session['access_token'] = access_token.token
redirect "/"
end
!!! Listing 7: Erzeugen eine Access-Token mit OAuth
if session['access_token']
@access_token = OAuth2::AccessToken.new(client, session['access_token'])
end
@graph = JSON.parse(@access_token.get("/me"))
@friends = JSON.parse(@access_token.get("/me/friends"))
!!! Listing 8: Verwendungh des Open Graph Protocol