2012-08-08 94 views
0

我做的是,Facebook的PHP SDK设置重定向URL

我通过与AJAX调用控制器/功能“用户/ authenthicate”开始

此功能GET是从SDK的loginurl和将其返回到JavaScript,这是window.open.href ... sofar sogood ..我被引导到Facebook登录页面,

但成功登录后,它重定向回到相同的用户/身份验证。

问题:这是正常的行为吗?或者我可以设置redirecturl ..

问题:它返回的URL之间没有斜线之间的问号,所以功能永远不会像这样“users/authenthicate?bladeblibla”识别。

*我没有设置一些URL时,我registred应用程序,但是这是一个完全不同的URL 类似的 “http://www.domain/users/facebook_login” *

感谢理查德

回答

1

您可以设置重定向的URI如下:

$linkToOauthDialog = $this->facebook->getLoginUrl(

    array(
    'scope'   => SCOPE_OF_THE_APP, 
    'redirect_uri' => REDIRECT_URI 
) 

); 

你也应该记住,Safari浏览器不允许在iframe设置第三方cookie,这就是为什么你需要重定向到自己的域名第一,在那里你设置一个cookie和redi再次回到Facebook。否则,你会以无限循环结束。

我在这里更详细地描述这个方法: Safari 3rd party cookie iframe trick no longer working?

+0

嗯,谢谢,但我没有做一些iframe,我认为,..-这是一个整页重定向喜欢去谷歌和回来 - 我会尝试你的解决方案.. – Richard 2012-08-08 15:45:19

+0

哦,我看到。我以为你得到了一个facebook应用程序的auth对话框,通常在iframe中运行。 – 2012-08-08 15:52:43

+0

不,我需要它进行网站身份验证,我为所有提供商设置所有身份验证,接下来是雅虎,因为您的解决方案像魅力一样工作。现在我正在处理那些我打算使用abrahams oauth库的人,或者你现在是一个更好的人,可以与oauths中的所有人一起工作,或者他们都需要特定的处理吗?我也有lightopenid,但它不会做oauth ..YAHOO也有它自己的sdk ..但它真的是必要的吗? – Richard 2012-08-08 16:01:43

1

是的,这是PHP SDK的默认行为。当您拨打getLoginUrl()并且您未在参数数组中指定redirect_uri时,它将尝试使用当前的URL。

我认为你想要使用的是JS sdk的FB.login()方法,而不是使用window.open重定向(将打开弹出窗口,但你会得到信息返回到你的页面的js)。

+0

不,没有弹出窗口,它的工作原理是相同的作为PHP中的标题 – Richard 2012-08-08 15:48:14

+1

哦,我想我只使用'window.location ='new url';'格式。但后来不确定,为什么你会从js获得登录url,为什么不把用户发送到'users/authenticate' url,并使用http头进行重定向。 – complex857 2012-08-08 15:55:34

+0

是的,现在你提到它,它会更好,当你开始使用JavaScript将名称从提供程序中传递出去时,它会起作用吗,我必须测试更多..我认为我为了调试目的而设置它,所以我可以看到什么值正在通过与萤火虫..它更直接.. – Richard 2012-08-08 16:44:56