2011-08-14 67 views
0

我该从哪里出发?这几乎只是从sdk中提供的示例复制粘贴。我不明白人们如何使用这个API来构建任何东西?我如何打开登录等提示屏幕? Facebook在那里说了些什么?Facebook API帮助

<?php 

require 'fb_sdk/src/facebook.php'; 

// Create our Application instance (replace this with your appId and secret). 
$facebook = new Facebook(array(
    'appId' => 'APIID', 
    'secret' => 'SECRET', 
)); 

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

// We may or may not have this data based on whether the user is logged in. 
// 
// If we have a $user id here, it means we know the user is logged into 
// Facebook, but we don't know if the access token is valid. An access 
// token is invalid if the user logged out of Facebook. 

if ($user) { 
    try { 
    // Proceed knowing you have a logged in user who's authenticated. 
    $user_profile = $facebook->api('/me'); 
    } catch (FacebookApiException $e) { 
    error_log($e); 
    $user = null; 
    } 
} 

// Permissions requested from the user. 
$par = array(); 
$par['scope'] = 'user_about_me, read_friendlists'; 

// Login or logout url will be needed depending on current user state. 
if ($user) { 
    $logoutUrl = $facebook->getLogoutUrl(); 
} else { 
    $loginUrl = $facebook->getLoginUrl($par); 
} 

?> 

回答

1

你可以找到有关使用图形用户认证here on Facebook Developers的信息。

使用$loginUrl = $facebook->getLoginUrl($par);变量$loginUrl将包含验证对话框的URL。大多数开发人员无论是目前这给用户一个链接或执行的JavaScript重定向 - 如:

die('<script>top.location.href = "' . $loginUrl . '"</script>'); 

另一种方法是使用JavaScript SDK与XFBML进行身份验证(如果您有饼干使得能够利用软件开发工具包,他们将共享会话数据) - 从here例如:

<?php 

require 'php-sdk/src/facebook.php'; 

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

// See if there is a user from a cookie 
$user = $facebook->getUser(); 

if ($user) { 
    try { 
    // Proceed knowing you have a logged in user who's authenticated. 
    $user_profile = $facebook->api('/me'); 
    } catch (FacebookApiException $e) { 
    echo '<pre>'.htmlspecialchars(print_r($e, true)).'</pre>'; 
    $user = null; 
    } 
} 

?> 
<!DOCTYPE html> 
<html xmlns:fb="http://www.facebook.com/2008/fbml"> 
    <body> 
    <?php if ($user_profile) { ?> 
     Your user profile is 
     <pre>    
     <?php print htmlspecialchars(print_r($user_profile, true)) ?> 
     </pre> 
    <?php } else { ?> 
     <fb:login-button></fb:login-button> 
    <?php } ?> 
    <div id="fb-root"></div> 
    <script>    
     window.fbAsyncInit = function() { 
     FB.init({ 
      appId: '<?php echo $facebook->getAppID() ?>', 
      cookie: true, 
      xfbml: true, 
      oauth: true 
     }); 
     FB.Event.subscribe('auth.login', function(response) { 
      window.location.reload(); 
     }); 
     FB.Event.subscribe('auth.logout', function(response) { 
      window.location.reload(); 
     }); 
     }; 
     (function() { 
     var e = document.createElement('script'); e.async = true; 
     e.src = document.location.protocol + 
      '//connect.facebook.net/en_US/all.js'; 
     document.getElementById('fb-root').appendChild(e); 
     }()); 
    </script> 
    </body> 
</html> 

您还可以使用JavaScript纯粹登录使用FB.Login

FB.login(function(response) { 
    if (response.authResponse) { 
    console.log('Welcome! Fetching your information.... '); 
    FB.api('/me', function(response) { 
     console.log('Good to see you, ' + response.name + '.'); 
     FB.logout(function(response) { 
     console.log('Logged out.'); 
     }); 
    }); 
    } else { 
    console.log('User cancelled login or did not fully authorize.'); 
    } 
}, {scope: 'user_about_me, read_friendlists'}); 
+0

g^ood answer,至于@Jollygood:不要为此考虑API。它在那里*帮助*你的应用程序。一旦你清楚了解你的应用程序将提供什么,那么与Facebook API的集成点就会明确。以这个[示例](http://developers.facebook.com/docs/samples/canvas/)应用程序为例,您会意识到您的应用程序创意,并得出结论,您需要用户全名,电子邮件,照片和来自Facebook的朋友并相应地使用API​​。 – ifaour

0

它在评论中提到:

// Login or logout url will be needed depending on current user state. 
if ($user) { 
    $logoutUrl = $facebook->getLogoutUrl(); 
} else { 
    $loginUrl = $facebook->getLoginUrl($par); 
} 

SDK将采取照顾,你不用担心。 用户的详细信息在$ user_profile 做一个echo"<pre>"; print_r($user_profile); echo"</pre>";,你会得到它。