0

我正在尝试在我的网站上实施 FB 登录系统。我从最简单的测试登录页面开始,并希望从那里构建。

当我使用该$facebook->getLoginUrl()方法时,每次单击生成的 URL 都会产生错误。

我注意到 getLoginUrl() 生成的 URL 不包含 URL 字符串中的 client_id 参数。文档中似乎没有任何关于必须在 getLoginUrl 调用中设置该 client_id 的内容。我假设它是从 Facebook 对象的属性中提取的。

这是我的代码及其输出。

require_once("php-sdk/facebook.php");
$config = array();
$config[‘appId’] = /* my app id string */;
$config[‘secret’] = /* my app secret string */;
$config[‘fileUpload’] = false; // optional

$facebook = new Facebook($config);
$login_url = $facebook->getLoginUrl(array("scope"=>"email"));

echo  "<a href=\"$login_url\">Login with Facebook</a>";

显然 appID 和 secret 是实际值。我已经四次检查以确保它们是准确的。

生成的(编辑的)login_url 是: https://www.facebook.com/dialog/oauth?redirect_uri=[mysite]&state=[state_str]&scope=email

它应该是: https://www.facebook.com/dialog/oauth?client_id=[appID]&redirect_uri=[mysite]&state=[state_str]&scope=email

当我在浏览器中编辑 URL 以包含 client_id 时,它可以工作。显然我每次都可以自己手动创建正确的登录网址,但我想看看我使用 Facebook::getLoginUrl() 的方式是否有问题

4

1 回答 1

0

当我看到粘贴在这里的代码时才意识到,当我复制 Facebook 文档时,它复制了应该是单引号的内容作为智能引号。因此,facebook 对象没有使用应用程序 ID 和 api 密钥正确初始化。将它们更改为单引号解决了该问题。

于 2012-09-22T22:47:16.557 回答