与getLoginUrl()的Facebook.com错误

时间:2010-10-27 00:05:18

标签: facebook facebook-graph-api

我使用以下命令生成登录网址:

$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/(只需点击身份验证链接)

2 个答案:

答案 0 :(得分: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>';

解决方案。

答案 1 :(得分:0)

我遇到了这个问题,但它有不同的原因。我正在添加它作为答案,只是因为它可以帮助任何落在这里的人。

与facebook'一起发生错误。请稍后再尝试'错误页面,我看到以下PHP通知我已经实现了facebook API:

  • 使用未定义的常量'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"
);

一些非常简单的问题很难发现!我希望这有助于某人。