2014-02-20 30 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