Facebook 的API

初略地研究了一下Facebook的API

基本上,你可以

   1. 用JS从客户端调这个API, 也可以用php, java从服务器端调用API

   2. API可以返回json结构的数据,也可以直接返回html. 两种格式都可以为Mash-up服务

   3. 可以用“iframe包含”方式来mash-up facebook的一个页面,也可以嵌入facebook的自定义标签来调用API

官方给的例子:

   1.客户端直接使用 iframe

     <body>
       <iframe src="http://www.facebook.com/plugins/like.php?href=YOUR_URL"><iframe>
    </body>
    

   2. 在客户端用facebook提供的XML标签库(XFBML) ,使你的页面代码更简洁

    <body>
      <script src="http://connect.facebook.net/en_US/all.js#xfbml=1"></script>
      <fb:like></fb:like>
    </body>

   3. 客户端获得JSON数据

<body>
      <div id="fb-root"></div>
      <script src="http://connect.facebook.net/en_US/all.js">
      </script>
      <script>
         FB.init({ 
            appId:'119449798131809', cookie:true, 
            status:true, xfbml:true 
         });
         FB.api('/me', function(user) {
           if(user != null) {
              var image = document.getElementById('image');
              image.src = 'http://graph.facebook.com/' + user.id + '/picture';
              var name = document.getElementById('name');
              name.innerHTML = user.name;
           }
         });
       </script>
           <div align="center">
           <img id="image"/>
           <div id="name"></div>
           </div>
    </body>

  4. 服务端获得JSON数据 (php)

<?php

define('YOUR_APP_ID', 'your app id ');
define('YOUR_APP_SECRET', 'your app secret');

function get_facebook_cookie($app_id, $app_secret) {
  $args = array();
  parse_str(trim($_COOKIE['fbs_' . $app_id], '\\"'), $args);
  ksort($args);
  $payload = '';
  foreach ($args as $key => $value) {
    if ($key != 'sig') {
      $payload .= $key . '=' . $value;
    }
  }
  if (md5($payload . $app_secret) != $args['sig']) {
    return null;
  }
  return $args;
}

$cookie = get_facebook_cookie(YOUR_APP_ID, YOUR_APP_SECRET);

$user = json_decode(file_get_contents(
    'https://graph.facebook.com/me?access_token=' .
    $cookie['access_token']));

?>
<html>
  <body>
    <?php if ($cookie) { ?>
      Welcome <?= $user->name ?>
    <?php } else { ?>
      <fb:login-button></fb:login-button>
    <?php } ?>
    <div id="fb-root"></div>
    <script src="http://connect.facebook.net/en_US/all.js"></script>
    <script>
      FB.init({appId: '<?= YOUR_APP_ID ?>', status: true,
               cookie: true, xfbml: true});
      FB.Event.subscribe('auth.login', function(response) {
        window.location.reload();
      });
    </script>
  </body>
</html>

Leave a Comment

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.