http://X.com:8080/X/#_=_
这是我登录成功后得到的URL
我似乎也无法用 backbone.js 捕捉这些字符,所以我真的不明白如何克服这个问题。
有人知道为什么会发生这种情况吗?
<org.springframework.social-version>1.1.0.M1</org.springframework.social-version> <org.springframework.social.facebook-version>1.1.0.M1</org.springframework.social.facebook-version>
以及对服务器的调用(使用 handlebars 你可以想象提供者说的是什么):
<script type="text/x-handlebars-template" id="provider-login-btn-template"> <form action="signin/{{provider}}" method="POST" class="form" style="margin:0px"> <fieldset> <div class="formRow"> <input type="hidden" name="scope" value="email,publish_stream,offline_access" /> <input type="image" style="width:50px;height:50px" src="{{image_url}}" onsubmit="submit();" /> </div> </fieldset> </form> </script>
就是这样。我被重定向到 facebook,登录,然后返回到 /#_=_
。
谢谢。
最佳答案
一个非常 hacky 的方法是只接受 Facebook 附加到 redirect_uri 的垃圾,并在您的主干路由器中为其添加别名。例如,在我的应用程序中,用户被重定向到 http://www.exampleapp.com/#身份验证成功后,这将与我建立的主干路由相匹配:
ExampleApp.Routers.Router = Backbone.Router.extend({
...
routes: {
"": "index",
},
...
});
Facebook 的问题在于 window.href 末尾的“_ = _”破坏了 Backbone 路由器。所以我处理这个问题的 hacky 方法是简单地停止战斗并将垃圾别名也匹配索引方法,如下所示:
ExampleApp.Routers.Router = Backbone.Router.extend({
...
routes: {
"": "index",
"_=_": "index"
},
...
});
然后,在“index”方法(或任何您称之为它的方法)中,添加如下内容以使 url 更漂亮:
if (window.location.hash === "#_=_") {
window.location.hash = "#";
}
现在,显然会有更复杂的情况,这是行不通的,所以我写这个答案没有任何保证!
关于javascript - 奇怪的文字 : "#_=_" showing on the URL after successful Login to Facebook with spring social,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19755309/