播放框架附加#_ = _以通过OAuth2在Facebook认证后重定向?

时间:2011-09-06 19:15:47

标签: java facebook playframework oauth-2.0

在使用Play Framework调用OAuth2 :: retrieveAccessToken()后,我正在进行简单的重定向。我有一些有趣的字符附加到我从未放在那里的URL,所以最终结果如下:

  

http://localhost:9000/#_=_

#_ = _究竟来自哪里?这是路线文件中的路线定义:

  

GET / Application.index

以下是处理Facebook身份验证的控制器的代码段:

public static void facebookConnect() {
    OAuth2 facebook = new OAuth2(
        "https://graph.facebook.com/oauth/authorize",
        "https://graph.facebook.com/oauth/access_token",
        "2#############6",
        "c##############################2"
    );

    if(OAuth2.isCodeResponse()) {
        OAuth2.Response oauthResponse = facebook.retrieveAccessToken(facebookAuthUrl());
        if(oauthResponse.error == null) {
            //... Somewhere here, something is causing #_=_ to be appended to the URL?
            Application.index();
        }
    }
    facebook.retrieveVerificationCode(facebookAuthUrl());
}

编辑:

根据this page,如果request_uri为空,Facebook最近更改了他们的API以包含 = ,问题是...我的request_uri已经明确设置了?

2 个答案:

答案 0 :(得分:21)

这是在安全更新后添加的。

来自Facebook developer blog

  

更改会话重定向行为

     

本周,我们开始向redirect_uri添加片段#_=_   当此字段留空时。请确保您的应用可以处理   这种行为。

答案 1 :(得分:1)

也许这些角色来自facebook回调。我得到了像

这样的FB回调
localhost:9000?someparams#code=verylongcodefromfacebook

我可以通过在请求访问令牌之前清理params来摆脱#。