使用 getLoginUrl 包含 redirect_uri 时出错(Facebook PHP SDK)

Posted

技术标签:

【中文标题】使用 getLoginUrl 包含 redirect_uri 时出错(Facebook PHP SDK)【英文标题】:Error when including redirect_uri with getLoginUrl (Facebook PHP SDK) 【发布时间】:2012-02-17 17:20:19 【问题描述】:

我希望用户在使用 Facebook 登录后被重定向到特定网页。我使用 Facebook php SDK 创建了一个LoginUrl,用户点击此链接登录。我在使用$facebook->getLoginUrl() 时关注http://developers.facebook.com/docs/reference/php/facebook-getLoginUrl/

问题:如果我要包含redirect_uri 参数,Facebook 会给我一个错误An error occurred. Please try again later. 登录网址在不包含redirect_uri 的情况下可以正常工作。

有人知道如何解决这个问题吗?谢谢!

不工作的 PHP 代码

$loginUrl = $facebook->getLoginUrl(array(
        "scope" => "email,user_education_history,user_work_history",
        "redirect_uri" => "http://mydomain.com/login/facebook"
    ));

工作 PHP 代码

$loginUrl = $facebook->getLoginUrl(array(
        "scope" => "email,user_education_history,user_work_history",
    ));

【问题讨论】:

【参考方案1】:

我有这个same exact problem。 FB 将参数从 redirect_url 更改为 next,从 v2 更改为 v3,并且记录在案。试试next,应该适合你。

【讨论】:

谢谢迈克!我尝试使用"next" => "http://mydomain.com/login/facebook",现在不再有任何错误,但是在单击Go to App 按钮后,用户不会被重定向到新的网址... next 参数在 facebook 完成工作并登录用户时使用。完成后,facebook 使用此参数将用户重定向到您指定的 url。所以当你点击go to app按钮时,它应该让用户登录到facebook,对吗? 是的......它不是那么聪明,Facebook 说你可以在登录后使用 redirect_uri(用 i 代替 L)进行重定向,但它不起作用,我仍然不知道...... 【参考方案2】:

这是一个相当老的话题,但这是我发现的解决方案,如果有人稍后阅读它......首先是你在“非工作 PHP 代码”中错过了“redirect_uri”之后的逗号。如果您在应用程序设置(Canvas 中的应用程序)中选择了“Facebook 上的应用程序”,那么您的 redirect_uri 必须与您为 Canvas 应用程序设置的 url 相同。如果您只使用 Page Tab,redirect_uri 可以是任何东西。

$loginUrl = $facebook->getLoginUrl(array(
    "scope" => "email,user_education_history,user_work_history",
    "redirect_uri" => "http://mydomain.com/login/facebook",
));

【讨论】:

以上是关于使用 getLoginUrl 包含 redirect_uri 时出错(Facebook PHP SDK)的主要内容,如果未能解决你的问题,请参考以下文章

ModelAndView的使用 包括 forward转发、redirec重定向

获取 Facebook 登录回调 C#

使用新的 PHP SDK (3.X.X) 请求许可

Facebook C# SDK 不返回所有信息

Linux下安装使用Solr

Nginx的日志