从Facebook Connect用php提取uid

时间:2010-06-29 11:08:13

标签: javascript php facebook

我想提取用户的facebook-id并将其放入php变量。

我正在使用的代码来自facebook教程视频,它的工作原理。我只是想在php代码中使用用户ID。

这是我的代码:

<form action="" method="post">
<div id="user">
 Name: <input name="name" size="27" /><br />
    <fb:login-button length="long" onlogin="update_user_box();"></fb:login-button>

</div>
<textarea name="comment" cols="30" rows="5"></textarea><br />
<input type="submit" value="Submit comment" />
</form>


<script type="text/javascript" src="http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php"></script>

<script type="text/javascript">

function update_user_box() {
 var user_box = document.getElementById("user");
 user_box.innerHTML =
 "<span>"
 +"<fb:profile-pic uid='loggedinuser'></fb:profile-pic>"
 +"Welcome, <fb:name uid='loggedinuser' useyou='false'></fb:name>. "
 +"You are signed in with your Facebook account."
 +"<fb:uid uid='loggedinuser'></fb:uid>"
 +"<a href='#' onclick='FB.Connect.logout(function() { reload(); }); return false;' ><img id='fb_logout_image' src='http://static.ak.fbcdn.net/images/fbconnect/logout-buttons/logout_small.gif' border='0' alt='Connect'/></a>"
 +"</span>";

 FB.XFBML.Host.parseDomTree();
}

FB.init("API-KEY","xd_receiver.htm");

FB.ensureInit ( function () {
        FB.Connect.ifUserConnected(update_user_box);
});
</script>

4 个答案:

答案 0 :(得分:0)

您无法将变量从JavaScript传递给PHP; JavaScript是一种客户端语言(即它由浏览器执行),而PHP是服务器端语言(即它由服务器执行)。

使用XMLHttpRequest(通常称为AJAX)将数据从JavaScript传递到PHP可以将HTTP请求发送到PHP脚本,但我不确定这是你想要的。

答案 1 :(得分:0)

一旦用户登录(通常使用javascript FB.login()),就会设置一个cookie。 PHP可以访问该cookie。查看以下PHP代码(来自http://developers.facebook.com/docs/guides/web#login):

<?php

define('FACEBOOK_APP_ID', 'your application id');
define('FACEBOOK_SECRET', 'your application secret');

function get_facebook_cookie($app_id, $application_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 . $application_secret) != $args['sig']) {
    return null;
  }
  return $args;
}

$cookie = get_facebook_cookie(FACEBOOK_APP_ID, FACEBOOK_SECRET);

?>

然后你可以获得$ cookie('uid'),并在你需要的地方使用它。

我上面链接的页面应该包含有关将JavaScript SDK与PHP结合使用的所有信息。

答案 2 :(得分:0)

你应该包含php的facebook客户端库,然后你可以轻松获得这样的用户ID:

include ('facebook_client_library.php');
$facebook = new facebook('API', 'SECRET');
$fbid = $facebook->get_loggedin_user();
echo $fbid;

或试试这个javascript(不确定):

alert(FB.Facebook.apiClient.get_session().uid);

答案 3 :(得分:0)

使用数组,检查我的问题Facebook Registration Connect它有我使用的代码然后只需添加

$fuid = $response["registration"]["user_id"];

如果这不起作用,请尝试

$fuid = $response["user_id"];

希望我得到了帮助, 布拉德