2017-03-21 108 views
0

我嘗試寫一個Chrome瀏覽器擴展,這是通過訪問某個網站來觸發的。到目前爲止,這已經工作。我的分機用戶來自我的網頁遊戲,他們用他們的Facebook帳戶登錄。爲了用他們的遊戲帳戶識別分機用戶,我需要從我的遊戲中知道他們的fb應用範圍用戶ID。鉻擴展和Facebook登錄問題

到目前爲止,我瞭解到我的後臺腳本無法使用facebook sdk登錄,因爲window.fbAsyncInit沒有在裏面調用。我環顧四周尋找解決方案,並找到了此頁:http://brianmayer.com/2012/12/building-a-chrome-extension-that-connects-to-a-facebook-app/

他打開一個包含iframe的不可見選項卡。在iframe的內部,他從Web服務器調用Facebook登錄sdk,然後將帶有windows.postmessage的用戶數據發送給父級。這聽起來像是我的問題的完美解決方案。只有一條線,我不明白我補充有:

parent.postMessage({connectStatus:"" + response.status + "", userID:"" + uid + "", accessToken:"" + at + ""}, "https://www.<PARENT_PAGE_DOMAIN>"); //This MUST match the root domain where the iFrame will be inserted, or the message won't get passed 

我有什麼在現場PARENT_PAGE_DOMAIN補充的嗎?我使用了清單文件中content_scripts/maches中的頁面的根域,並使用了託管iframe頁的域,但我從未在我的後臺腳本中收到郵件。

+0

的評論說,它需要你插入的iframe到頁面的域名... – CBroe

+0

是的,我已經讀過,但就像我寫我不知道當我創建一個動態的HTML包括一個背景腳本內的iframe的域URL是如何?我的意思是隻有iframe中的文件有一個真正的http地址。這是該擴展的後臺腳本。那麼我在哪裏可以看到該背景文件具有哪個網址? – computermaus

回答

0

您是否嘗試過使用它? enter link description here

所有你需要得到重定向URL首先 get redirect url 這裏是我的代碼:

chrome.identity.launchWebAuthFlow({ 
    url: AUTH_URL, 
    interactive: true 
    }, function(redirectURL) { 
    if (chrome.runtime.lastError) { 
     alert(chrome.runtime.lastError.message); 
    } 
    if(redirectURL){ 
     var q = redirectURL.substr(redirectURL.indexOf('#')+1); 
     var parts = q.split('&'); 
     for (var i = 0; i < parts.length; i++) { 
     var kv = parts[i].split('='); 
     if (kv[0] == 'access_token') { 
      var token = kv[1]; 
      console.log(token) 
      // do something... 
     } 
     } 
    } 
    });