Facebook graph api 通过“应用和网站”将我的网站从Facebook上删除后不再工作

Facebook graph api 通过“应用和网站”将我的网站从Facebook上删除后不再工作,facebook-graph-api,oauth,oauth-2.0,facebook-oauth,scribe,Facebook Graph Api,Oauth,Oauth 2.0,Facebook Oauth,Scribe,我的网站SpringMVC允许用户使用他们的Facebook帐户注册,然后使用他们的Facebook帐户登录我的网站。我使用Java 6.6.3版与Facebook进行Oauth集成 我已经测试了一个用例,但找不到解决它的方法。以下是步骤列表: 测试人员进入我的站点的登录页面,单击使用Facebook登录,授予Facebook的权限,重定向到我的站点,然后注销。这是一个正常且成功的流程。 测试人员在Facebook.com上登录Facebook 测试人员进入设置->应用程序和网站并删除我的网站

我的网站SpringMVC允许用户使用他们的Facebook帐户注册,然后使用他们的Facebook帐户登录我的网站。我使用Java 6.6.3版与Facebook进行Oauth集成

我已经测试了一个用例,但找不到解决它的方法。以下是步骤列表:

测试人员进入我的站点的登录页面,单击使用Facebook登录,授予Facebook的权限,重定向到我的站点,然后注销。这是一个正常且成功的流程。 测试人员在Facebook.com上登录Facebook 测试人员进入设置->应用程序和网站并删除我的网站 测试人员进入我的站点的登录页面,单击“使用Facebook登录”按钮,重定向到Facebook,并看到一条错误消息。 在步骤4,测试人员总是在Facebook站点上收到一条错误消息,而不是要求测试人员再次授予权限。请参见以下屏幕截图:

我在Facebook上找不到一种方法,在单击“使用Facebook登录”按钮时删除此消息。这是我的web界面代码。我错过什么了吗

@RequestMapping( value="/facebook", method = RequestMethod.GET)
public void facebook(HttpServletRequest request, 
        @RequestParam(value = "page", required = true) String page,
        HttpServletResponse response) throws Exception {

    try {

        OAuth20Service service =  new ServiceBuilder(config.getProperty("facebook.clientId"))
            .apiSecret(config.getProperty("facebook.clientSecret"))
            .callback(getCallback())
        .build(FacebookApi.instance());

        String authUrl = service.getAuthorizationUrl(); 

        response.sendRedirect(authUrl);

    } catch (Exception e) {

        response.sendRedirect("/oauthFail");
    }       

}

@RequestMapping( value="/facebook/callback", method = RequestMethod.GET)
public void facebookCallback(HttpServletRequest servletRequest,
        @RequestParam(value = "code", required = false) String code,
        @RequestParam(value = "error", required = false) String error,
        HttpServletResponse servletResponse
        ) throws Exception {

    try {

        OAuth20Service service =  new ServiceBuilder(config.getProperty("facebook.clientId"))
            .apiSecret(config.getProperty("facebook.clientSecret"))
            .callback(getCallback())
        .build(FacebookApi.instance());

        OAuth2AccessToken accessToken = service.getAccessToken(code);  

        final OAuthRequest request = new OAuthRequest(Verb.GET, "https://graph.facebook.com/v3.2/me");
        service.signRequest(accessToken, request);        
        final com.github.scribejava.core.model.Response response = service.execute(request);

        String body = response.getBody();
        JSONObject jObject = new JSONObject(body);
        String email = jObject.getString("email");

        //success. use the email to create an account or if the email address exists, direct a userto their account page

    } catch (Exception e) {

        response.sendRedirect("/oauthFail");
    }

}   

如何处理这种情况?我觉得要么是我的代码出了问题,要么是Java有框架问题。或者这是Facebook特有的问题?

我刚刚测试了这个案例。无法复制。 您是否尝试运行此示例 ? 我认为你的问题可能与Facebook中的API版本逻辑有关。
您可以尝试显式使用最新版本。buildFacebookApi.customVersion3.2

我通过maven使用了scribejava 6.3.0。我使用了.buildFacebookApi.customVersion3.2而不是.buildFacebookApi.instance;在上述代码中。现在,从我的网站到Facebook的url是https://www.facebook.com/v3.2/dialog/oauth?redirect_uri=.... 我仍然看到相同的错误消息,而不是请求我的许可。上面的代码是我所有的代码。您是否在web界面中测试了确切的用例?我收到了一封来自Google的电子邮件,上面说Google+API将于2019年3月7日关闭。我的站点与Google的注册/登录集成基于以下示例:此示例使用googleapis URL。我的选择是什么?我用过这个例子。你也可以试试。你拥有它-关于谷歌的问题已经离题了,不是吗?不管怎样,你需要什么选择?