2014-09-12 124 views
1

如何使用Firebase的簡單登錄來允許用戶上傳音樂文件。連接Firebase簡單登錄和外部服務器

據我所知,甚至考慮將音頻文件存儲在Firebase的數據庫中是沒有意義的,這就是爲什麼我想能夠將它們存儲在外部PHP服務器上的原因。

因此,問題在於我是否可以使用Firebase的簡單登錄系統來允許用戶向外部服務器進行身份驗證。

我見過Using NodeJs with Firebase - Security ......這給了一些很好的見解,但是如何讓大文件上傳到外部服務器呢?

回答

3

來自answer you linked的技術也適用於您的情況,您只需將其轉換爲PHP和Firebase REST APIs即可。另外,由於REST API不是實時的,你必須添加一些可以輪詢的任務隊列。與Simple Login

  • 用戶寫

    1. 用戶登錄到火力地堡只有他們能夠(基於security rules)的地方:

      你的程序會流這樣的事情。用戶還將條目寫入任務隊列。

    2. 您的PHP服務器連接一個令牌,允許讀取所有用戶的祕密地點。
    3. 您的PHP服務器每隔一段時間輪詢一次firebase以查找新任務。如果有新任務,它會驗證用戶並允許該用戶向其發佈數據。

    所有這些都說了,這將會非常複雜。 PHP的執行模式並不太適合於實時系統,並

    我強烈建議你考慮一些其他的選擇:

    • 您使用的雲平臺,火力地堡,爲您實時的東西,所以考慮爲您的二進制文件雲服務,如filepicker.io
    • 如果你真的想自己託管文件,使用更實時的東西像node.js.它會爲您節省構建該任務隊列的工作量。
  • +0

    感謝您的回覆,但我仍然感到困惑。用戶何時/何時實際提交音樂文件以及安全規則如何影響用戶與遠程服務器上的音樂進行交互? ...總之,外部服務如何接收音樂文件? – Joseph 2014-09-12 18:52:34

    +0

    我的一些混淆是,在firebase上你沒有服務器端代碼。因此,爲了提供服務器端代碼,您需要另一臺服務器與其進行交互,從而提供有關想要了解外部服務器如何知道用戶已通過身份驗證的部分。假設你按照給出的答案行事......當你等待外部服務器連接時,音樂文件將存儲在何處?在該示例中,電子郵件的信息存儲在Firebase數據庫中,但是,如果我理解正確,則不適用於音頻文件。 – Joseph 2014-09-12 18:58:21

    +0

    那麼,您可以通過編碼將二進制內容直接存儲到Firebase中。這不是真的爲它設計的,但它確實有效。你可以在這裏瞭解更多有關這方面的信息:http://stackoverflow.com/questions/13955813/how-can-i-view-and-store-images-in-firebase除此之外,它歸結爲你想要保護哪部分:寫或讀。如果只是讀取,您可以允許任何人編寫然後將不可猜測的CDN網址安全地存儲在您的Firebase中。爲了保護寫入,它變得更復雜一些,取決於提供者。 – mimming 2014-09-12 20:02:34