Detect Like with Facebook JavaScript API + iFrame -
building app facebook javascript api embedded page using new iframe method.
i want detect if have liked current page. use print_r($_request) in php doesn't seem work when using iframe.
there option: http://developers.facebook.com/docs/reference/fbml/visible-to-connection/ says deprecated , have never liked method hacky.
what way t now? prefer use xfbml + javascript api can use php if required.
we've done several times, , seems work pretty well. uses xfbml generate like button widget , js sdk render xfbml , subscribe facebook events. code sample below:
edit: since you're looking detect if user fan when page loads, , fb deprecated feature let directly them when canvas loaded passing fb_page_id
address query string, you'll need application install user test fan-dom of page. adds lot of friction application, - guess.
<?php require 'facebook.php'; // create our application instance (replace appid , secret). $facebook = new facebook(array( 'appid' => 'your app id', 'secret' => 'your app secret', 'cookie' => false, )); try { $session = $facebook->getsession(); if (empty($session['uid'])) { throw new exception("user not connected application."); } $is_fan = $facebook->api(array( 'method' => 'fql.query', 'query' => "select uid, page_id page_fan uid = {$session['uid']}" )); if (false == $is_fan || count($is_fan) == 0) // 0 results returned if user not fan { $is_fan = false; } else { $is_fan = true; } } catch (facebookapiexception $e) { /** * don't have active user session or required permissions * user, rdr facebook login. **/ $loginurl = $facebook->getloginurl(array( 'req_perms' => 'user_likes' )); header('location: ' . $loginurl); exit; } ?> <html> <head> </head> <body> <? if (empty($is_fan)): //user not fan. ?> <fb:like href="http://www.facebook.com/your-facebook-page" show_faces="true" width="400"> </fb:like> <? else: ?> yay! you're fan! <? endif; >? <div id="fb-root"></div> <script src="http://connect.facebook.net/en_us/all.js" type="text/javascript"> </script> <script type="text/javascript"> fb.init({ appid: '<?= fb_app_id; ?>', cookie: true, status: true, xfbml: true }); // subscribe edge creation event, facebook fb.event.subscribe('edge.create', function(response) { alert("congratulations! excited fan now! woot!") }); </script> </body> </html>
okay, got got formatted straight markdown. wasn't painful @ all.. (sike) :|
Comments
Post a Comment