【问题标题】:How to logout from Facebook using Spring Social如何使用 Spring Social 从 Facebook 注销
【发布时间】:2015-12-20 23:24:06
【问题描述】:

我在尝试使用 Spring Social 中的 Facebook API 实现注销按钮时遇到问题。

要注销,我是否必须像在下面的登录按钮中那样调用 URL?

我能够实现调用 URL '/connect/facebook' 的登录,如下所示:

<form action="/connect/facebook" method="POST">
    <input type="hidden" name="scope" value="read_stream,email" />
    <md-button type="submit">
        <i class="fa fa-facebook-square"></i> Login
    </md-button>
</form>

我还扩展了 ConnectController 以将用户重定向到主页:

@Controller
public class FacebookController extends ConnectController {

    @Inject
    public FacebookController(ConnectionFactoryLocator connectionFactoryLocator, ConnectionRepository connectionRepository) {
        super(connectionFactoryLocator, connectionRepository);
    }

    @Override
    protected String connectedView(String providerId){
        return "redirect:/";
    }

}

我正在使用 AngularJS 来获取用户,如果它已连接,下面是我负责的服务:

function login() {
    var request = $http({
        method: "GET",
        url: "/home/user"
    });

    return (request.then(handleSuccess, handleError));
}

和后端的其余控制器查找或注册用户:

@RestController
public class LoginController {

    @Autowired
    private Facebook facebook;

    @Autowired
    private UsrService usrService;

    @RequestMapping(value = "/home/user", method = RequestMethod.GET)
    public Usr findUser() {
        Usr user;

        if (!facebook.isAuthorized()) {
            return null;
        }

        String name = facebook.userOperations().getUserProfile().getName();
        String email = facebook.userOperations().getUserProfile().getEmail();
        byte[] avatar = facebook.userOperations().getUserProfileImage(ImageType.SQUARE);

        user = usrService.find(email);

        // saves the new user
        if (user == null) {
            user = new Usr(email, name, avatar, 0);
            user.setName(name);
            user.setAvatar(avatar);
            user.setLikes(0);
            usrService.save(user);
        }

        return user;
    }
}

我找不到任何接近我实现登录方式的解决方案,我还检查了 github 上的 spring-social 示例,但它们的实现与我的完全不同。

谢谢。

【问题讨论】:

    标签: java angularjs facebook spring-social spring-social-facebook


    【解决方案1】:

    对于那些可能遇到同样问题的人,我做了:

    我再次查看了 spring 社交文档,发现我只需要在 '/connect/facebook' 处发出 DELETE 请求。

    这可以在4.3.4部分找到

    【讨论】:

    • 如果您遇到诸如“找不到 HTTP 请求 /connect/facebook 的映射”之类的问题,您可以尝试将以下 ConnectController 放入您的 dispatcher-servlet.xml:
    • 这只是断开应用程序与 facebook 的连接还是完全从 facebook 注销用户?即如果用户访问 www.facebook.com,是否会要求用户再次登录?我正在寻找一种将用户完全退出 facebook 的解决方案
    猜你喜欢
    • 2017-02-28
    • 1970-01-01
    • 1970-01-01
    • 2013-01-22
    • 2012-09-11
    • 2012-08-16
    • 1970-01-01
    • 2013-04-01
    • 1970-01-01
    相关资源
    最近更新 更多