2013-04-18 132 views
1

(從https://groups.google.com/forum/?hl=en&fromgroups=#!topic/hybridauth/CWo2R9suYts轉推)將HybridAuth與Javascript SDK結合使用?

從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 /登錄/臉譜」方法:

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

不幸的是,這似乎是一個數量的‘重定向’在HybridAuth使這不起作用。我甚至在Ajax調用中添加了「data:{ajax:true}」,並試圖修改HyrbidAuth在$ _POST ['ajax']存在時不重定向。這似乎也沒有做到這一點。 (我甚至在重定向()函數結束時刪除了「die();」)

我在想我要麼在正確的軌道上,要麼我需要添加一個新的HybridAuth方法檢測並存儲已存在的所有或特定連接的數據。

任何想法?

謝謝。

回答

1

我嘗試了幾種使用JavaScript SDK登錄Provider的方法,並將其與HyrbidAuth集成。沒有解決方案非常漂亮,每個解決方案都需要我修改HybridAuth,這很難維護。我最終確定最好的解決方案是遵循HybridAuth中包含的「小部件」示例。

我沒有使用小部件,但代碼顯示了使用Javascript打開和關閉單獨較小窗口的方法。該窗口的URL包含服務器調用HybridAuth的'authenticate'方法的信息,該方法將重定向到Provider的登錄/批准頁面。

效果基本相同:用戶在使用提供程序在單獨的「窗口」中進行身份驗證時停留在同一頁面上。

相關問題