2014-02-20 32 views
2

此刻,我把手Ember.js無效的路線是這樣的:如何處理無效的路由沒有斜槓Ember.js

this.route('invalid', { path: '*path' } 

這工作,並適用於類似的路線:

https://www.appname.com/#/misspelled_name 

但是,使用Dropbox Datastores API時,我遇到了一些問題。認證請求後,Dropbox重定向到:

https://www.appname.com/#access_token=... 

有沒有辦法處理這條路線?路線名稱前沒有斜槓?在這種情況下,「無效」路線未應用,並且收到錯誤「路線access_token = ...未找到」。我應該如何在Ember中處理這個響應?

UPDATE

我不認爲這是可能的處理這個問題。對我來說唯一的工作解決方案是在Ember被加載之前進行身份驗證。認證成功後,我打開我的燼的應用程序:

window.dropboxClient = new Dropbox.Client({ 
     key: 'some_key' 
    }); 

    dropboxClient.authenticate({ interactive: true }, function(error) { 
     if (error) { 
     return console.log('Error during authentication'); 
     } 
    }); 

    yepnope([{ 
     test : window.dropboxClient.isAuthenticated(), 
     yep : ['my-ember-app.js'] 
    }]) 
+0

你有沒有解決過這個問題?我有'#_ = _'的Facebook身份驗證重定向網址的問題。 – Spundun

回答

0

我沒有與EmberJS直接經驗,但一個可能性是運行client.authenticate({ interactive: false });前EmberJS腳本甚至加載。

另一種選擇是指定一個不同的重定向URI(與應用程序的其餘部分不一樣)並且不在該頁面上加載EmberJS。 (這個頁面大概會在完成後重定向到主應用程序。)您也可以完全放棄重定向,而使用彈出式auth驅動程序。

+0

感謝您的建議,但是,我需要在Ember內部完成。這是應用程序的重要組成部分。 也許彈出的auth會解決這個問題。我會嘗試一下,謝謝... – icoach

+0

這兩種情況都差不多......你需要使用一個OAuth重定向頁面,它不會*運行Ember。這可以在彈出窗口中短暫出現,或者在重定向回主頁面之前暫時出現。您更喜歡哪一種應該只是關於您是否喜歡彈出式流程而不是重定向流程。 – smarx

0

在​​之前,您實際上並不在應用程序中。因此,沒有任何一個ember代碼會對此產生任何影響。

+0

這不完全正確。 EmberJs試圖處理所有的路由,並且會拋出一個像這樣的異常:'Uncaught Error:Assertion Failed:The route _ = _ was not found'。這一個是用於Facebook身份驗證重定向與類似的問題。 – Spundun