1

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

从 Facebook 开始,我正在尝试使用提供商 Javascript SDK 登录并让 HybridAuth “了解”它。任何帮助,将不胜感激。

我首先在传递给视图的数据中包含配置 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 调用中添加了“data: {ajax:true}”,并尝试修改 HyrbidAuth 以在 $_POST['ajax'] 存在时不重定向。那似乎也没有做到。(我什至删除了 redirect() 函数末尾的“die();”,但无济于事。)

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

有任何想法吗?

谢谢。

4

1 回答 1

1

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

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

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

于 2013-08-19T17:30:42.087 回答