javascript - 奇怪的文字 : "#_=_" showing on the URL after successful Login to Facebook with spring social

标签 javascript spring-mvc backbone.js spring-social

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/

相关文章:

javascript - 必需的字符串参数 'text' 不存在

java - 我正在开发一个 spring mvc 项目,我想从两个下拉框和一个文本框中提交值

java - 如何将登录用户的 session 数据传输到另一个 Java 应用程序

javascript - 本地存储设置初始数据?

javascript - 评估的 jquery 动态变量

javascript - 使用 Vue.js 替换输入中的文件

javascript - Modal 中的 Bootstrap Accordion 只能工作一次

javascript - 返回带有点击链接的页面并同时刷新?坚持跨浏览器支持

javascript - RequireJs 导出 Handlebars 模板

javascript - Backbone.js 部分模型更新