2011-07-04 48 views
0

我在設計一個使用OAuth和PHP的Google Contacts Import應用程序。我試圖找出初始請求頁面如何與我的回調頁面交互。OAuth Ajax回調URL設計邏輯

頁面結構:

  1. 網頁A:回調頁

  2. 網頁B:的OAuth請求頁面

過程:

  1. 用戶點擊「導入聯繫人「頁面A,新窗口(頁面B)打開並指向Google OAuth登錄。

  2. Page B包含交換OAuth令牌的腳本;一旦訪問被授予,頁面B彈出窗口關閉,並將訪問令牌傳遞給頁面A使用從頁面B獲取的訪問令牌,抽取Google XML數據,解析並通過AJAX刷新以顯示已解析聯繫信息。

現在,我只能夠與頁面B中的回調信息進行交互,彈出窗口。我想要做的是從頁面B到頁面A的傳遞信息。我確定這需要某種AJAX編程,但是你能告訴我一般的設計邏輯來實現嗎?沒有特定的代碼要求。溝通這兩個網頁

回答

1

的一種方法是,如果你正在使用打開另一個窗口,在這兩個頁面定期使用一個共同的存儲位置(在服務器上的數據庫),並提取數據與setInterval()

setInterval(function(){ 
    //Your AJAX code to get data from common database here 
}, 1000); //1000 will make a request each second 

window.open,另一種方法是在這兩個頁面中都有全局JavaScript函數(默認爲公共),並從另一頁面調用它們。

網頁A

var pageB = window.open("pageB"); 
function receiveDataFromPageB(data){ 
    //Do something with data 
} 
... 
//This should be called when needed, for example to send the token 
pageB.receiveDataFromPageA(some_data); 

網頁B

var pageA = window.opener; 
function receiveDataFromPageA(data){ 
    //Do something with data 
} 
... 
//This should be called when needed, for example to send the token back 
pageA.receiveDataFromPageB(some_data); 

我認爲這會引導你能在你的頁面之間intercommute。 希望這有助於。乾杯

+0

謝謝埃德加。我會試試這個。 – Nick

+0

我發現了一個非常簡單的解決方案,我甚至沒有想過要使用它。只需將數據保存在一個php會話變量中。使用JavaScript刷新父頁面。希望這可以幫助某人。 – Nick