(从https://groups.google.com/forum/?hl=en&fromgroups=#!topic/hybridauth/CWo2R9suYts重新发布)
从Facebook开始,我正在尝试使用提供商Javascript SDK登录并让HybridAuth“知道”它。任何帮助将不胜感激。
我首先将配置ID包含在我传递给View的数据中,这样我就可以在调用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调用中添加了“data:{ajax:true}”,并尝试修改HyrbidAuth,如果它存在$ _POST ['ajax']则不重定向。这似乎也没有。 (我甚至删除了redirect()函数末尾的“die();”无效。)
我想我要么在正确的轨道上,要么我需要添加一个新的HybridAuth方法来检测和存储已经存在的所有或特定连接的数据。
有什么想法吗?
感谢。
答案 0 :(得分:1)
我尝试了几种使用Javascript SDK登录Provider的方法,并将其与HyrbidAuth集成。没有解决方案非常漂亮,每个都要求我改变难以维护的HybridAuth。我最终确定最好的解决方案是遵循HybridAuth中包含的“小部件”示例。
我没有使用小部件,但代码显示了使用Javascript打开和关闭单独的小窗口的方法。该窗口的URL包含服务器调用HybridAuth的“身份验证”方法的信息,该方法重定向到提供商的登录/批准页面。
效果基本相同:用户在单独的“窗口”中与提供商进行身份验证时保持在同一页面上。