2010-10-27 46 views
4

Facebook.com错误我生成使用登录网址:与getLoginUrl()

$facebook->getLoginUrl(array('canvas' => 1, 'fbconnect' => 0, "display"=>"page", 'next' => APP_URL, 'req_perms' => 'email,publish_stream,offline_access')) 

然而,当用户点击,他将被重定向到该页面与Facebook商标和消息中的链接“去到Facebook。 com'下面。为什么会发生这种情况,以及如何解决它?

一个活生生的例子:http://apps.facebook.com/soundofcamden/(只需点击链接进行身份验证)

回答

3
$login_url = $facebook->getLoginUrl(array('canvas' => 1,'fbconnect' => 0, 'req_perms' => 'email,publish_stream,offline_access', 'next' => APP_URL)); 
echo '<div class="notice">You need to <a href="' . $login_url . '" onclick="top.location.href = \'' . $login_url . '\';">authenticate first</a>.</div>'; 

的解决方案。

0

我遇到了这个问题,但它有一个不同的原因。我将它添加为一个答案,因为它可以帮助任何人登陆这里。

随着脸谱“发生了错误。请稍后再试“的错误页面,我所看到的,我已经实现了Facebook API以下PHP声明:

  • 使用未定义的常量‘APPID’ - 假设'APPID'
  • 使用未定义的常量”秘密“ - 假设'秘密'
  • 未定义指数:APPID
  • 未定义指数:秘密
  • 未定义的固定范围的使用 - 假设‘范围’
  • 使用未定义的常量REDIRECT_URI的 - 假设” REDIRECT_ uri'

简而言之,错误是由我从Facebook SDK文档中复制/粘贴代码引起的。

长时间的回答是前四个通知是由数组键名引号造成的。他们是unicode,PHP没有意识到。用标准单引号替换它们可以修复它。

最后两个是由数组键加引号不是(从Facebook的SDK文档拷贝)引起的:

$params = array(
    scope => 'read_stream, friends_likes','email', 
    redirect_uri => "CALLBACK-URL.COM" 
); 

更改为:

$params = array(
    'scope' => 'read_stream, friends_likes','email', 
    'redirect_uri' => "CALLBACK-URL.COM" 
); 

几个非常简单的问题,是一个痛点发现!我希望这可以帮助别人。

+0

它更多的是缺乏PHP知识,而不是与Facebook PHP-SDK直接相关的问题。你应该总是在PHP中引用数组键名。 – Gajus 2012-01-04 00:03:47

+2

我想指出的是,这是在Facebook PHP-SDK文档中提供的示例。虽然它的核心是缺乏PHP知识,但这很容易让很多人绊倒。我在这里添加了答案,因为这个问题在文档页面上列出。 – Aaron 2012-01-04 10:44:40

相关问题