1

我正在尝试在我的网站上登录 Facebook,但遇到了问题。

我已经使用这个类在 PHP 中使用 Facebook 登录。

我在我的站点中创建了一个名为的 PHP 文件,login.php其中包含以下代码

$facebook = new FacebookLogin(APP_ID, APP_SECRET);
$user = $facebook->doLogin();
// then initialize the SESSION variables here using $user info
header("Location: ' . $url);

现在的问题是,我想将 get 参数传递给 the login.php,并且从这个参数中我可以知道我将重定向到的 $url 。但是FacebookLogin该类正在进行重定向调用,因此 login.php 中的 get 参数丢失了,所以我决定$this->urlFacebookLogin构造函数中添加 login.php 参数:

$this->my_url = 'http://' . $_SERVER['SERVER_NAME'] .  $_SERVER['PHP_SELF'] . '?' . $_SERVER['QUERY_STRING'];

现在的问题是这也不起作用verifyLogin(),因为 URL 不正确,此行返回空结果:

$result = @file_get_contents(self::TOKEN_URL . '?' . http_build_query($data));

它应该返回access_token

所以你怎么看?

简单地说,我需要一种用户单击链接以通过 Facebook 登录的方式,但在返回用户之前,我想通过 PHP 中的代码传递,然后重定向到用户在获取参数中单击指定的 url。

对不起,这可能很愚蠢,但我花了很多时间试图解决这个问题,几个小时后就有了最后期限。

感谢你的帮助

4

1 回答 1

3

您尝试使用PHP-SDK实现的目标很简单:

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

$loginURL = $facebook->getLoginUrl(array(
  //'redirect_uri'=>'URL_WHERE_USER_WILL_BE_LANDED_AFTER_LOGIN' 
));

header("Location: {$loginURL}");

如果您希望将一些数据传递给您的应用程序以供用户返回授权后的后续步骤使用,请将其作为 URL 参数的一部分传递redirect_urigetLoginUrl.

因此,例如,如果您将通过http://my.app.com/?link_to_visit=some_link,因为redirect_url您将被重定向到该 URL 而不是当前 URL(在授权之前)。

稍后您可以:

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

$userId = $facebook->getUser();
$accessToken = $facebook->getAccessToken();

$linkToVisit = $_REQUEST['link_to_visit'];

顺便说一句,为了人类,不要使用几年前由名声不详的人编写的一些愚蠢的客户端,而支持官方的 Facebook PHP-SDK,它们确实遵循平台上的所有变化(而且它们是巨大的)......

于 2012-06-22T20:43:25.840 回答