2011-12-22 61 views
1

我試圖在Chrome擴展程序中使用Facebook圖表,但我在使用訪問令牌有權限時遇到問題。我的擴展文件夾中有與此代碼background.html文件:在Chrome擴展程序中使用Facebook圖表

function displayUser(user) { 
     var userName = document.getElementById('userName'); 
     var greetingText = document.createTextNode('Greetings, ' + user.name + '.'); 
     userName.appendChild(greetingText); 
    } 

    var appID = "XXXXX"; 
    if (window.location.hash.length == 0) { 
     var path = 'https://www.facebook.com/dialog/oauth?'; 
     var queryParams = ['client_id=' + appID,'redirect_uri=https://www.facebook.com/connect/login_success.html', 'response_type=token']; 
     var query = queryParams.join('&'); 
     var url = path + query; 
     window.open(url); 
    } else { 
     var accessToken = window.location.hash.substring(1); 
     var path = "https://graph.facebook.com/me?"; 

     var queryParams = [accessToken, 'callback=displayUser']; 
     var query = queryParams.join('&'); 
     var url = path + query; 

    // use jsonp to call the graph 
     var script = document.createElement('script'); 
     script.src = url; 
     document.body.appendChild(script);   
    } 

當我運行的擴展,它會打開與應用程序權限的新標籤。當我接受它,它只是說,「成功」,這標籤的網址是這樣的:

https://www.facebook.com/connect/login_success.html#access_token=AAABtoJwdQQgBAP8KK6QYmlQ1CJOSjQxWjXoa7qgUthF507BGPgLeWEplB87fZBpDZBZBd7CKoIWb4Fa3S2laBuZAUf795p1N3QZDZD&expires_in=5549

所以現在我怎麼可以使用此訪問令牌中background.html和關閉的授權標籤?

回答

1

你應該看(在擴展代碼)成功URL這樣

chrome.tabs.onUpdated.addListener(onTabUpdated); 

然後處理函數標籤的變化:

function onTabUpdated(tabId, changeInfo, tab) { 
    if (changeInfo.url && changeInfo.url.indexOf(SUCCESS_URL) == 0) { 
    // extract access token from url 

提取功能:

function accessTokenFromSuccessURL(url) { 
var hashSplit = url.split('#'); 
if (hashSplit.length > 1) { 
    var paramsArray = hashSplit[1].split('&'); 
    for (var i = 0; i < paramsArray.length; i++) { 
    var paramTuple = paramsArray[i].split('='); 
    if (paramTuple.length > 1 && paramTuple[0] == 'access_token') 
     return paramTuple[1]; 
    } 
} 
return null; 

}

0

根據redirect_uri=https://www.facebook.com/connect/login_success.html來判斷,我假設你正在構建桌面或客戶端應用程序。

嘗試增加var RedirectURI = window.location; 而queryParams數組中更改重定向URI來redirect_uri= RedirectURI 如果需要,你可以在https://developers.facebook.com/apps

一旦令牌獲得加http://localhost網站網址進入,它會被重定向到以前的頁面添加授權令牌作爲散列,由代碼中的else { }塊自動處理。