2016-05-18 2 views
2

Уверен, что команда firebase и все здесь заняты, поэтому я стараюсь держать ее в курсе. 2 дня назад у меня был простой код, который работал:Firebase Migrating - Простой firebase.set больше не работает - Старый против нового

var rootRef = new Firebase(http://*.firebaseio.com/) 

function geturl() { 
    chrome.tabs.query({currentWindow: true, active: true}, function (tabs) { 
     var tabURL = tabs[0].url; 
     rootRef.set({ 
      title: tabURL 
     }); 
    }); 
} 

Сейчас я пытаюсь это перенести, так что у меня это:

var config = { 
    apiKey: "*-*", 
    authDomain: "*-*-*.firebaseapp.com", 
    databaseURL: "https://*-*-*.firebaseio.com", 
    storageBucket: "*-*-*.appspot.com", 
}; 
firebase.initializeApp(config); 
var rootRef = firebase.database().ref(); 

function geturl() { 
    chrome.tabs.query({currentWindow: true, active: true}, function (tabs) { 
     var tabURL = tabs[0].url; 
     rootRef.set({ 
      title: tabURL 
     }); 
    }); 
} 

И это больше не работает. SDK также обновлен, я изменил src на новый (будьте осторожны с копированием/вставкой из новых документов, 404 для одного из файлов). Кто-нибудь, у кого есть ключ?

------ EDIT

Я думаю, что это что-то делать с content_security_policy в manifest.json, согласно 3 year old tutorial его необходимо установить на это, для того, чтобы использовать firebase в расширение хром:

"content_security_policy": "script-src 'self' https://cdn.firebase.com 
https://*.firebaseio.com; object-src 'self'" 

Теперь кто-то имеет представление о том, как изменить это для того, чтобы работать с новым SDK? Есть несколько новых URL-адресов, необходимых для установления соединения, я думаю, что это нужно изменить. Всплывающее окно консоли дает мне эту ошибку:

Refused to execute inline script because it violates the following Content Security Policy directive: "script-src 'self' https://cdn.firebase.com https://.firebaseio.com https://.firebaseio-demo.com https://www.gstatic.com/ ". Either the 'unsafe-inline' keyword, a hash ('-='), or a nonce ('nonce-...') is required to enable inline execution.

+0

Из интереса, что страница была 404? Мы хотели бы исправить это! –

+0

@IanBarber У одного из быстрых стартов для Web был /live/3.0.0/firebase.js, который не существует. Я полагаю, что существует только /live/3.0/... или просто /3.0.0/firebase.js. Кроме того, теги сценария здесь не заканчиваются (). Рад помочь. – ffritz

+0

@Felix знаете ли вы, какой быстрый запуск? что поможет много thx :) – Nivco

ответ

0

Как указал Xan, у меня был inline scripts, который не работал. Я решил это следующим образом:

Popoup.html

<html> 
<head> 
    <script src="https://www.gstatic.com/firebasejs/3.0.4/firebase.js"></script> 
    <script src="popup.js"></script> 
</head> 
    <body> 
    <button id="clickme">click me</button> 
</body> 
</html> 

Popup.js

var config = { 
    apiKey: "*-*", 
    authDomain: "*.firebaseapp.com", 
    databaseURL: "https://*.firebaseio.com", 
    storageBucket: "*.appspot.com", 
    }; 
    firebase.initializeApp(config); 
     var rootRef = firebase.database().ref(); 

function geturl() { 
     chrome.tabs.query({currentWindow: true, active: true}, function (tabs) { 

     var tabURL = tabs[0].url; 
     rootRef.set({ 
      title: tabURL 
      }); 

    }) 

}; 

document.addEventListener("DOMContentLoaded", function() { 
    document.getElementById('clickme').addEventListener('click', geturl); 
}); 
1

Если это новый проект, вы можете поразить одну из более тонких изменений: правила базы данных ограничены по умолчанию.

На Firebase.com база данных используется как мир чтения и записываемые, а потому, что есть так много новых возможностей на Firebase, проекты, созданные в new console умолчанию для требующих идентификации:

{ 
    "rules": { 
    ".read": "auth != null", 
    ".write": "auth != null" 
    } 
} 

Вы можете добавить anonymous auth, чтобы перейти или просто обновить правила до старых значений по умолчанию.

Это изменение было сделано из-за расширенного объема Firebase - поскольку в Firebase есть много функций, было бы легче создать проект и забыть заблокировать базу данных (если бы они не использовали ее) , что привело их к созданию всемирной доступной для записи базы данных.

+0

Я активировал анонимный auth, но он все равно ничего не пишет в базу данных. Я собираюсь изучить его позже. Спасибо хоть! – ffritz

+0

Я обновил вопрос, не могли бы вы посмотреть? Связанный Git от Эндрю Ли, может быть, он все еще в вашей команде? В любом случае спасибо :) – ffritz

Смежные вопросы