2011-05-23 45 views
0

我发现这里的代码http://developers.facebook.com/docs/authentication/FB PHP认证

<?php 

    $app_id = "YOUR_APP_ID"; 
    $app_secret = "YOUR_APP_SECRET"; 
    $my_url = "YOUR_URL"; 

    session_start(); 
    $code = $_REQUEST["code"]; 

    if(empty($code)) { 
    $_SESSION['state'] = md5(uniqid(rand(), TRUE)); //CSRF protection 
    $dialog_url = "http://www.facebook.com/dialog/oauth?client_id=" 
     . $app_id . "&redirect_uri=" . urlencode($my_url) . "&state=" 
     . $_SESSION['state']; 

    echo("<script> top.location.href='" . $dialog_url . "'</script>"); 
    } 

    if($_REQUEST['state'] == $_SESSION['state']) { 
    $token_url = "https://graph.facebook.com/oauth/access_token?" 
     . "client_id=" . $app_id . "&redirect_uri=" . urlencode($my_url) 
     . "&client_secret=" . $app_secret . "&code=" . $code; 

    $response = file_get_contents($token_url); 
    $params = null; 
    parse_str($response, $params); 

    $graph_url = "https://graph.facebook.com/me?access_token=" 
     . $params[‘access_token’]; 

    $user = json_decode(file_get_contents($graph_url)); 
    echo("Hello " . $user->name); 
    } 
    else { 
    echo("The state does not match. You may be a victim of CSRF."); 
    } 

?> 

我改变了应用程序ID应用程序的秘密和URL,我创建了一个页面,一个HTML句话我上传了该网站的服务器上,我得到的错误页面未找到。任何人都可以帮助我吗?我也需要包含任何东西?

+0

什么“未找到”?如果你的脚本没有找到 - 那么你可能要求错误的网址。这个问题与Facebook无关。 – zerkms 2011-05-23 05:21:57

+0

脚本被找到后,我点击页面中的超链接我在浏览器中看到的URL也发生变化,它有facebook.com和一些令牌...但它然后显示页面没有找到 – koool 2011-05-23 05:30:17

+0

什么网址?...... – koool 2011-05-23 05:31:46

回答

2

你想要在你的代码中做什么是对已经存在的东西的解决方法。请使用Facebook PHP SDK作为您正在尝试的事情。它使事情变得容易很多,你可能在更短的时间内达到目标。

+0

嗨,你可以请给我一些指导方针如何使用它或指向一些教程有一些信息,因为我在网上看到的所有教程似乎已经过时 – koool 2011-05-23 05:35:03

+2

请您点击我在“Facebook PHP SDK”中嵌入的链接。 SDK的最后更改大约为1天,如果在点击链接后向右滚动,则可以看到使用情况。如果你需要更多的信息,你应该首先考虑学习php! – wegginho 2011-05-23 09:45:56

1

您应该使用Facebook PHP SDK(see on github)。它是死的简单处理在记录用户下面是它的样子:

require 'facebook.php'; 
$facebook = new Facebook(...); 

$user = $facebook->getUser(); 

如果用户已登录,$user将包含他的Facebook ID。但这并不意味着您有一个有效的访问令牌来进行API调用:如果他刚刚从Facebook注销,$user将不会为空,但访问令牌将不再有效。检查

的一种方式,如果你有一个有效的令牌实际上是试图使一个API调用:

if ($user) { 
    // The user is logged in 
    try { 
    $facebook->api('/me'); 
    // Here : API call succeeded, you have a valid access token 
    } catch (FacebookApiException $e) { 
    // Here : API call failed, you don't have a valid access token 
    // you have to send him to $facebook->getLoginUrl() 
    $user = null; 
    } 
} else { 
    // The user is not logged 
    // you have to send him to $facebook->getLoginUrl() 
} 

然后,登录用户或获得有效的访问令牌:

if (!$user) { 
    // display link to $facebook->getLoginUrl(); 
} 

您可能想要检查the example of the Facebook PHP SDK以获得完整的流程,它已被充分记录。

希望有所帮助。

+0

非常感谢我的努力! – koool 2011-05-27 18:50:38