1

我創建了一個類似於Google Analytics的腳本(在加載時創建腳本,將數據推送到數組,在託管腳本中使用以存儲跟蹤數據一個數據庫)用於Facebook的即時文章,這樣我就可以在我的軟件內部跟蹤統計數據。但問題是,Facebook的提供有關我的腳本CSP錯誤:使用Facebook即時文章自定義跟蹤代碼op-tracker和CSP違規

Refused to load the script 'https://My-Domain.com/js/w_analytics.js' 
because it violates the following Content Security Policy directive: 
"script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com 
*.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 
'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net 
fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self'". 

即時文章標記與代碼預期塊內的所有腳本正確:

<figure class="op-tracker"> 
    <iframe> [code] </iframe> 
</figure> 

我目前正在調試這種通過Facebook的調試頁面:http://ww.ia-tracker.fbsbx.com/instant_article_test?url=<share_url>

奇怪的是,偶爾我得到一些統計數據,通過從即時文章,BU我的數據庫只是不一致或每個頁面視圖。

Facebook的文檔說你可以做一個直接的URL到您的跟蹤,就像這樣:

<figure class="op-tracker"> 
     <iframe src="http://my-url-tracker.com/"> 
      <!-- 
      The request to http://my-url-tracker.com/ will be rewritten to 
      include the following query parameters: 

      ia_share_url: The URL the user shared 
      ia_title: The article title 
      --> 
     </iframe> 
</figure> 

但問題是,它說,它僅發送這兩個參數,當我自己的跟蹤需要更多的信息這是我的軟件(如UA字符串)是必需的,所以理想情況下我想避免這種方法。

是否有其他人有過使用自定義跟蹤腳本的經驗?

回答

1

這個亂搞幾天後,我得到了它使用op-trackeriframe src到我的自定義跟蹤腳本工作,像這樣:

<figure class="op-tracker"> 
     <iframe src="http://my-url.com/tracker.php"></iframe> 
</figure> 

Facebook的文檔不太多走給出有關這種方法,他們忽略信息的小點點:有送出一第三個參數是引薦ia_referrer(這將返回爲ia.facebook.com

然後,您可以用您的「tracker.php」的$_GET$_SERVER組合腳本來抓取任何東西你需要爲你的腳本其他細節,如:

$instantArticleURL = urldecode($_GET['ia_share_url']); 
    $HTTPreferrer = $_GET['ia_referrer']; 
    $userAgent = $_SERVER['HTTP_USER_AGENT']; 
    $visitorIP = $_SERVER['REMOTE_ADDR']; 

您可能還需要包括這個header()tracker.php以確保Facebook能夠訪問腳本(修改以適應您的網站的需求,顯然):

header("Access-Control-Allow-Origin: https://www.facebook.com");

希望這將節省別人頭疼了幾天:)