getLoginURL不包括client_id参数

时间:2012-09-22 17:51:43

标签: php facebook

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

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

我注意到getLoginUrl()生成的URL在URL字符串中不包含client_id参数。在docs中似乎没有任何关于必须在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和秘密是实际值。我检查了四倍,以确保它们准确无误。

生成的(已编辑的)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时,它可以正常工作。显然我每次都可以自己手动创建正确的登录URL,但我想知道我使用Facebook :: getLoginUrl()

的方式是否有问题

1 个答案:

答案 0 :(得分:0)

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