java - Spring Boot 社交媒体 - facebook 登录

标签 java spring spring-boot facebook-login spring-social

我正在尝试使用 Spring Boot Social 进行 Facebook 登录。为此,我从 facebook 属性创建 url。我有 url,当我从 Debug模式获取它并放入浏览器时,它可以按我希望的方式工作(因此链接正常),但是当我从 spring Controller 发送重定向时,什么也没有发生。在 google chrome 中,我可以看到请求已发送,并且我还可以在 chrome 控制台中看到此类错误:

无法加载 [url]。预检响应无效(302 状态)。

我的 Controller 方法:

@RequestMapping(value = "/connect/facebook", method = RequestMethod.POST)
public String send(Model model){
    String url = socialMediaService.createAuthorizationURL();
    return "redirect:" + url;
}

我知道重定向到此链接存在一些问题,但我不知道如何以正确的方式执行此操作。

编辑:

这一切都与 CORS“Access-Control-Allow-Origin”属性有关。通过 javascript 使用数据类型“jsonp”发送此重定向就足够了,如下所示:

$.ajax({
     url: data.url,
     type: "get",
     dataType: "jsonp"
});

最佳答案

“redirect:”+ url 方法适用于通常可能返回 View 的用例。您可以将该 View 的名称设置为 "redirect:"+ url,然后返回它以发出重定向,而不是正常渲染 View 。由于您的 Controller 操作始终重定向,请尝试返回 RedirectView:

@RequestMapping(value = "/connect/facebook", method = RequestMethod.POST)
public RedirectView send(Model model){
    String url = socialMediaService.createAuthorizationURL();
    return new RedirectView(url);
}

Docs for RedirectView

此外,您需要确保使用正确的 httpshttp 之一,并且您的 URL 构造正确。例如,https://example.url/resource 可能与 https://example.url/resource/

不同

关于java - Spring Boot 社交媒体 - facebook 登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48871960/

相关文章:

spring - 使用属性占位符表达式将属性文件中的 String[] 加载到 @CrossOrigin 的 origins 字段中

java - 使用注释的 Spring JDBC 模板为 null

java - 为 TypedQuery 指定的类型与其自身不兼容

java - 用 thymeleaf 添加 css

java - 如何跟踪系统时钟

Java keystore : Command "openssl" not found

spring - Eclipse 间接引用的 .class 文件

java - Spring Boot 应用程序无法使用 Spring Boot Dashboard 在 Eclipse 中启动

java - 为什么这次调用中的服务为空?

java - 即使场景中 VBox 的宽度大于 0,它的宽度仍然为 0