(从https://groups.google.com/forum/?hl=en&fromgroups=#!topic/hybridauth/CWo2R9suYts重新发布)

从Facebook开始,我正在尝试使用提供程序的Javascript SDK进行登录并让HybridAuth知道。任何帮助,将不胜感激。

我首先在传递给View的数据中包含配置ID,以便在调用Javascript登录函数时可以使用它们。因此,在Hybrid_Auth类的GetProviders函数的中间,我添加了:

if(array_key_exists('keys', $params) && array_key_exists('id', $params['keys']))
$idps[$idpid]['id'] = $params['keys']['id'];


我的Javascript包含以下内容:

FB.init({
appId:'<?php echo $providers['Facebook']['id']; ?>',
cookie:true,
status : true,
xfbml:true
});


到目前为止,一切都很好。

但是登录(即FB.login())后,HybridAuth当然不知道并且没有用户信息。

然后要“强制”它,我尝试通过Ajax调用“ ... / hauth / login / Facebook”方法:

$.ajax({
type: "POST",
url: ".../hauth/login/Facebook",
cache: false,
...


不幸的是,HybridAuth中的许多“重定向”似乎都无法实现。我什至在Ajax调用中添加了“数据:{ajax:true}”,并尝试修改HyrbidAuth以使其在$ _POST ['ajax']存在的情况下不重定向。这似乎也没有做到。 (我什至删除了redirect()函数末尾的“ die();”也无济于事。)

我想我要么在正确的轨道上,要么我需要添加一个新的HybridAuth方法来检测和存储已经存在的所有或特定连接的数据。

有任何想法吗?

谢谢。

最佳答案

我尝试了几种使用Javascript SDK登录提供程序并将其与HyrbidAuth集成的方法。没有一个解决方案是非常漂亮的,每个解决方案都要求我更改HybridAuth,这将很难维护。我最终确定最好的解决方案是遵循HybridAuth附带的“ widget”示例。

我没有使用小部件,但是代码显示了一种使用Javascript打开和关闭单独的较小窗口的方法。该窗口的URL包含供服务器调用HybridAuth的“ authenticate”方法的信息,该方法重定向到提供程序的登录/批准页面。

效果本质上是相同的:用户在单独的“窗口”中与提供者进行身份验证时停留在同一页面上。

关于php - 结合HybridAuth和Javascript SDK吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16074460/

10-11 14:09